{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import matplotlib as mpl\n",
    "import numpy as np\n",
    "from mpl_toolkits.mplot3d import Axes3D\n",
    "import scipy as sp\n",
    "import scipy.linalg\n",
    "import scipy.spatial\n",
    "import sympy as sy\n",
    "sy.init_printing() "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# <font face=\"gotham\" color=\"purple\"> The Dot Product</font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Consider two vectors\n",
    "\n",
    "$$\n",
    "\\mathbf{u}=\\left[\\begin{array}{l}\n",
    "u_{1} \\\\\n",
    "u_{2} \\\\\n",
    "\\vdots \\\\\n",
    "u_{n}\n",
    "\\end{array}\\right] \\quad \\text { and } \\bf{v}=\\left[\\begin{array}{l}\n",
    "v_{1} \\\\\n",
    "v_{2} \\\\\n",
    "\\vdots \\\\\n",
    "v_{n}\n",
    "\\end{array}\\right]\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The dot product of $\\mathbf{u}$ and $\\mathbf{v}$,i.e. $\\mathbf{u}\\cdot\\mathbf{v}$ is defined as\n",
    "\n",
    "$$\n",
    "\\left[\\begin{array}{llll}\n",
    "u_{1} & u_{2} & \\cdots & u_{n}\n",
    "\\end{array}\\right]\\left[\\begin{array}{c}\n",
    "v_{1} \\\\\n",
    "v_{2} \\\\\n",
    "\\vdots \\\\\n",
    "v_{n}\n",
    "\\end{array}\\right]=u_{1} v_{1}+u_{2} v_{2}+\\cdots+u_{n} v_{n}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can generate two random vectors, then let's compare operations in NumPy."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "u = np.round(100*np.random.randn(10))\n",
    "v = np.round(100*np.random.randn(10))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ -846., -1700., -6486., -1886., -1100.,  6776., -6210.,  1586.,\n",
       "        -245.,  2394.])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "u*v # this is element-wise multiplication"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEgAAAAPCAYAAABHsImTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACTUlEQVRYCa2Xi00DMQyGKeoAFWzACDwmADYobABsAGICBBsAGwAbABPw2IBuwGOD8n9VjNKQXNxeLLnXOPbnnM9Je4PpdLrSRwaDwYbi96R3Yv2UWF6/Unxqb81L+X9jCtRHBRpLqXJJv8NDcPnFaxFzU/ohHcX2ZXkpw8biXwY91fVaumFzQw36yo4A79KJ9CuB0VlnwebyU2eM5H8rhbUtpUNz4uLlAmOb8r1pfKGCPGAP+d903Zdt0qJAPN2tOGlINLsxSyyby0/+bNODwOCJ0kU5cfFygWZTEY71Hc6sONjJLztjOmm/1/YSDOaYa6qy38c2r18SQ4FIwk3M5ViGl2E8ijO3TnxgS2d555KmgGXHgrOnN2vxNT/NFwuUY9d4aYz8KcJ1xs7RwNx4VR9NRe3J1qI4nEtF8foVAcnEojz5c9bVZK15gZTRfhFqyb1+NY7NL8pbC4G5vyb2YzNqWqDwFDmTnmzVuavXLxebs7XmRTnWh6HVnmX0tJzFHhS20IkcOrdWAHj9LF/tugzPuiTHtu76HOpGabF/P9O5KIeN05//QzXx+tU4Nr8wj/tWcxCfawyzTZptsdCJHNAUvChevyIgmejJ4yhgzalYBz01K5AybIcsXa2Li9cv4KqXPrz7aD1xInbUO13WskDWlp0dpMRev3jBXd+rPLpMOpXyWvEnKsCNBl+ys0Vngq++HEqPMLR41YCDcDhTnBcGHVL10yJ5sizUuoN3I+JedFNXCbvKC+cNZ+NrEsuQbjkX37Ya73i7ioG78gvzG6eg9GL+0gAAAABJRU5ErkJggg==\n",
      "text/latex": [
       "$\\displaystyle -7717.0$"
      ],
      "text/plain": [
       "-7717.0"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "u@v # matrix multiplication"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEgAAAAPCAYAAABHsImTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACTUlEQVRYCa2Xi00DMQyGKeoAFWzACDwmADYobABsAGICBBsAGwAbABPw2IBuwGOD8n9VjNKQXNxeLLnXOPbnnM9Je4PpdLrSRwaDwYbi96R3Yv2UWF6/Unxqb81L+X9jCtRHBRpLqXJJv8NDcPnFaxFzU/ohHcX2ZXkpw8biXwY91fVaumFzQw36yo4A79KJ9CuB0VlnwebyU2eM5H8rhbUtpUNz4uLlAmOb8r1pfKGCPGAP+d903Zdt0qJAPN2tOGlINLsxSyyby0/+bNODwOCJ0kU5cfFygWZTEY71Hc6sONjJLztjOmm/1/YSDOaYa6qy38c2r18SQ4FIwk3M5ViGl2E8ijO3TnxgS2d555KmgGXHgrOnN2vxNT/NFwuUY9d4aYz8KcJ1xs7RwNx4VR9NRe3J1qI4nEtF8foVAcnEojz5c9bVZK15gZTRfhFqyb1+NY7NL8pbC4G5vyb2YzNqWqDwFDmTnmzVuavXLxebs7XmRTnWh6HVnmX0tJzFHhS20IkcOrdWAHj9LF/tugzPuiTHtu76HOpGabF/P9O5KIeN05//QzXx+tU4Nr8wj/tWcxCfawyzTZptsdCJHNAUvChevyIgmejJ4yhgzalYBz01K5AybIcsXa2Li9cv4KqXPrz7aD1xInbUO13WskDWlp0dpMRev3jBXd+rPLpMOpXyWvEnKsCNBl+ys0Vngq++HEqPMLR41YCDcDhTnBcGHVL10yJ5sizUuoN3I+JedFNXCbvKC+cNZ+NrEsuQbjkX37Ya73i7ioG78gvzG6eg9GL+0gAAAABJRU5ErkJggg==\n",
      "text/latex": [
       "$\\displaystyle -7717.0$"
      ],
      "text/plain": [
       "-7717.0"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.inner(u,v) # inner product here is the same as matrix multiplication"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "SymPy operation is the same like in linear algebra."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "u = sy.randMatrix(1, 10)\n",
    "v = sy.randMatrix(1, 10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAD4AAAAZCAYAAABpaJ3KAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACnElEQVRYCe2XjVEbMRCFfZkU4CEVxOkgpISkAyiB0IFdQ+jAlBDSQaACBjogHYDpwHnfWnsji/PN+qxkxoad2dPf096+02qla0aj0ZX0s9Tl23K5/OONQyibppmKx3nGZdaocSeix1nnQVf1Eb5D8F0NljKWR4yZVN9YOqlh/1/YeB8xmoixJY4VHc8dc24gqv77NEYdeRFJws1XQ/Y80vOsy2YUh5WAf/ay8kGoj0oVCOchi6N30qV0XOJoSx6S0qD+Q7qGpZ3Gpm5DbSJlIZ1kfdvgQv657eQroW7h3km8AJMc+ohf5fiuuubj5KIcU99v6dz7ozjHU0p6/SuwRrzKHufNATkRpuu0YHvYCiQbUVzglZsh/4V42v948dThyiN97NMorsPG1l2h5BaxKqdZNU9qn1QnfC3ZqXzWOGZIZqV8SB1H4CO40sCQdi3iEP4JQZyQ8xxjDyq5DF3TJ/kl/Wq19YcfhX70RXHrVrZsVQl1kYOgkeb9qrOXIZwfXWeM6WO05FWHtM/zbRDFYW6wVCG+4e2Qn6TV52NA8KP0VH1TKUceq3wrRSzxRXGrKcOfO4e6CHAcsT9fXFaSW2N3L5HK78xEgEdFm/GjOLc7pKyx4l/04pZc5oQlMpGwBJf1l1XmXyey5VjejuLyORvrNYhfymmyeCnsZU9srOyJdCFtP5LqhDr7fOaTozjHDy1rEJ/LWQ9X80NtblLI6aqwJyQ9gXk3886LqIji3Magsve3VAS4ZrJCHs7sQ0L3Vs5eqDQRDmd91QhxCM7K8BWOhOaCXa66bVT4wBa4kH9ul1K27ZbYSzyfcCh1J14j1Pfym7wR38tl28HptxXf4ePt5dTXveJK8fxCuk72cgl7nBY3foqMn2B2l/gLLmS8hgOH4RwAAAAASUVORK5CYII=\n",
      "text/latex": [
       "$\\displaystyle \\left[\\begin{matrix}15991\\end{matrix}\\right]$"
      ],
      "text/plain": [
       "[15991]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "u*v.T"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# <font face=\"gotham\" color=\"purple\"> The Norm of a Vector</font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The <font face=\"gotham\" color=\"red\">norm</font> is the length of a vector, definted by\n",
    "\n",
    "$$\n",
    "\\|\\mathbf{v}\\|=\\sqrt{\\mathbf{v} \\cdot \\mathbf{v}}=\\sqrt{v_{1}^{2}+v_{2}^{2}+\\cdots+v_{n}^{2}}, \\quad \\text { and } \\quad\\|\\mathbf{v}\\|^{2}=\\mathbf{v} \\cdot \\mathbf{v}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A NumPy built-in ```np.linalg.norm()``` is for computing norms.The default setting is to compute the length of vectors from origins."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle 6.324555320336759$"
      ],
      "text/plain": [
       "6.324555320336759"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = [2, 6]\n",
    "np.linalg.norm(a)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Verify the results."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle 6.324555320336759$"
      ],
      "text/plain": [
       "6.324555320336759"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.sqrt(2**2 + 6**2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can also compute a group of vectors' length, for instance $(2, 6)^T$, $(8, 2)^T$, $(9, 1)^T$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([6.32455532, 8.24621125, 9.05538514])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A = np.array([[2, 8, 9], \n",
    "              [6, 2, 1]])\n",
    "np.linalg.norm(A, axis = 0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# <font face=\"gotham\" color=\"purple\"> Distance in $\\mathbb{R}^n$</font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For $\\mathbf{u}$ and $\\mathbf{v}$ in $\\mathbb{R}^{n}$, the distance between $\\mathbf{u}$ and $\\mathbf{v},$ written as dist $(\\mathbf{u}, \\mathbf{v}),$ is the length of the vector $\\mathbf{u}-\\mathbf{v} .$ That is,\n",
    "\n",
    "$$\n",
    "\\operatorname{dist}(\\mathbf{u}, \\mathbf{v})=\\|\\mathbf{u}-\\mathbf{v}\\|\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Suppose we have two vectors $\\mathbf{u} = (2, 9)$ and $\\mathbf{v} = (-3, 4)$, compute the distance and visualize the results."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle 7.0710678118654755$"
      ],
      "text/plain": [
       "7.0710678118654755"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "u = np.array([2, 9])\n",
    "v = np.array([-3, 4])\n",
    "np.linalg.norm(u - v)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsIAAAKeCAYAAACvXn1VAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8GearUAAAgAElEQVR4nOzdd3xUVf7/8ddNJj200JsUkSLSDKGXRKQqSBdQRAG7q6ur+9VdV7Os+3PXti6uZQUEbDRZsaBUE0roUWwoRUGpIUACpLf7++OaGYZQUia5k8z7+XjMw3vvTM79zDUk75w59xzDNE1ERERERHyNn90FiIiIiIjYQUFYRERERHySgrCIiIiI+CQFYRERERHxSQrCIiIiIuKTFIRFRERExCcpCIuIXIBhGG8ZhnHcMIzvzjkWYRjGasMw9v7231oX+dopv71mr2EYUyquahERKYlyC8KbN282AT089ND11LX0xkdVvpbr1q27IzExsW779u3bFx577LHHTj777LPXm6bZ6tlnn73+j3/846nzv+7UqVNmixYt5p08ebLVqVOnWrVo0WJeSkpKsa/nkCFDbH/vVeFRlb83dS0r70PXslyvZ6mUWxDOzs4ur6Z9kq6n5+haek5Vvpb9+vUjIiLC7dhHH33ElClTAJgyZQrLli0r8nUrV65k4MCBREREUKtWLQYOHMiKFSuKdc7s7GxOnDhR9uKlSn9vVjRdS8/RtfQsT1xPhwfqEBHxCUlJSTRs2BCAhg0bcvz48SKvOXz4ME2bNnXuN2nShMOHDxd5nWEYFz3PhZ7TKqAiIp5XbkE4PT2d+Pj48mre56Slpel6eoiupedU9Wt57Ngxt59leXl5bu/3/H2Affv2kZub6zy+f/9+goODy3ydqvJ1Lg9V/XuzIulaeo6upWedez2jo6NL1Ua5BeGwsLBSFyVFxcfH63p6iK6l51T1a3ngwAG3n2WNGzemTZs2NGzYkKNHj9KoUaMi7//o0aNu12XBggX07du3yOsu1MMbHx/Po48+yo4dO8rh3fiWqv69WZF0LT1H19KzPHE9NWuEiEgxjRgxgvnz5wMwf/58brrppiKvGTx4MKtWrSIlJYWUlBRWrVrF4MGDK7pUEREpBgVhEZELmDhxIj179mT37t00adKEOXPm8Pjjj7N69WquuuoqVq9ezeOPPw7Ajh07mD59OgARERH85S9/ISoqiqioKJ566qkiN92JiIh30M1yIiIXsGDBggseX7t2bZFjXbt2Zfbs2c79qVOnMnXq1HKrTUREPEM9wiIiIiLikxSERURERMQnKQiLiIiIiE9SEBYRERERn6QgLCIiIiI+SUFYRERERHySgrCIiIiI+CQFYRERERHxSQrCIiIiIuKTFIRFRERExCcpCIuIiIiIT1IQFhGxSWxsLIZhOB8xMTEkJia6HTMMg9jYWLtLFRGpkhSERURsEhsbi2mazkdcXByRkZFux0zTVBAWESknCsIiIiIi4pMUhEVERETEJykIi4iIiIhPUhAWERGvZZomnTp1Yv78+QAsWbKEESNG0LhxY8LDw4mMjGTBggWlanvZsmV07NiRoKAgWrRowUsvveT2/P3338+0adPK/B5ExHspCIuIiNdavHgxKSkpTJo0CYCXXnqJ8PBw/vWvf/Hxxx8TExPDpEmTeOWVV0rUbkJCAqNHj6Zbt2588sknTJ06lf/7v//j5Zdfdr7mscce47333mPfvn0efU8i4j0cdhcgIiJyMTNnzmTy5MkEBAQA8Mknn1CnTh3n89dddx1HjhzhpZde4ne/+12x250xYwZ9+vRh9uzZAAwaNIiUlBRmzJjBfffdR2BgIM2bN6dPnz68/vrrvPjii559YyLiFdQjLCIiXmnfvn1s2rSJsWPHOo+dG4ILdenShePHj5eo7Z07d3L99de7HSsMw5s3b3YeGzNmDO+99x4FBQUlrF5EKgMFYRER8Upr164lLCyMTp06XfJ1mzZt4uqrry5R21lZWQQGBrodCwoKAuCHH35wHuvVqxdJSUl8++23JWpfRCoHBWEREfFKiYmJtGvXDj+/i/+qWrt2LR999BH3339/idpu1aoV27dvdzu2bds2AE6dOuU81r59e/z9/Z3PiUjVoiAsIiJe6dixYxccClHowIEDTJo0iZtuuonbb7+9RG3fc889fPTRR8yaNYuUlBRWrlzpHAfs7+/vfJ3D4aBmzZocO3asVO9BRLybgrCIiHilrKws53CF8506dYqhQ4dyxRVX8O6775a47alTp3LPPfdw7733EhERwejRo3nqqacAqF+/vttrg4KCyMrKKvkbEBGvpyAsIiJeKSIigtTU1CLHMzIyuPHGG8nJyWH58uWEhYWVuG1/f3/+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\n",
      "text/plain": [
       "<Figure size 864x864 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize = (12, 12))\n",
    "\n",
    "vects = np.array([[2, 9], [-3, 4], [3, -4], [5, 5]])\n",
    "col = ['red', 'blue', 'blue', 'green']\n",
    "cordt = ['$(2, 9)$', '$(-3, 4)$', '$(3, -4)$', '$(5, 5)$']\n",
    "\n",
    "for i in range(4):\n",
    "    ax.arrow(0, 0, vects[i, 0], vects[i, 1], color = col[i], width = .08, \n",
    "             length_includes_head = True,\n",
    "             head_width = .3, # default: 3*width\n",
    "             head_length = .6,\n",
    "             overhang = .4)\n",
    "    ax.text(x = vects[i][0], y = vects[i][1], s = cordt[i], size = 15)\n",
    "ax.grid()\n",
    "\n",
    "points = np.array([[2, 9], [5, 5], [3, -4], [-3, 4]])\n",
    "\n",
    "ax.arrow(points[3][0], points[3][1], points[1][0], points[1][1], color = 'green', width = .08, \n",
    "         length_includes_head = True,\n",
    "         head_width = .3, # default: 3*width\n",
    "         head_length = .6,\n",
    "         overhang = .4)\n",
    "\n",
    "line1 = np.array([points[0], points[1]])\n",
    "ax.plot(line1[:,0], line1[:,1], c = 'b', lw = 3.5,alpha =0.5, ls = '--')\n",
    "\n",
    "line2 = np.array([points[2], points[1]])\n",
    "ax.plot(line2[:,0], line2[:,1], c = 'b', lw = 3.5,alpha =0.5, ls = '--')\n",
    "\n",
    "ax.text(-2, 6, '$\\|\\|\\mathbf{u}-\\mathbf{v}\\|\\|$', size = 16)\n",
    "\n",
    "###################### Axis, Spines, Ticks ##########################\n",
    "ax.axis([-10, 10.1, -10.1, 10.1])\n",
    "ax.spines['left'].set_position('center')\n",
    "ax.spines['right'].set_color('none')\n",
    "ax.spines['bottom'].set_position('center')\n",
    "ax.spines['top'].set_color('none')\n",
    "ax.xaxis.set_ticks_position('bottom')\n",
    "ax.yaxis.set_ticks_position('left')\n",
    "\n",
    "ax.minorticks_on()\n",
    "ax.tick_params(axis = 'both', direction = 'inout', length=12, width=2, which='major')\n",
    "ax.tick_params(axis = 'both', direction = 'inout', length=10, width=1, which='minor')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "From the graph, we know that the $\\|\\mathbf{u}-\\mathbf{v}\\|$ is $\\sqrt{5^2 + 5^2}$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle 7.0710678118654755$"
      ],
      "text/plain": [
       "7.0710678118654755"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.sqrt(5**2 + 5**2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The same results as the ```np.linalg.norm(u - v)```."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# <font face=\"gotham\" color=\"purple\"> Orthogonal Vectors</font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We have two vectors $\\mathbf{u}$ and $\\mathbf{v}$, and square the distance of $\\|\\mathbf{u}+\\mathbf{v}\\|$ and $\\|\\mathbf{u}-\\mathbf{v}\\|$ \n",
    "\n",
    "$$\\begin{aligned}\n",
    "\\big[\\operatorname{dist}(\\mathbf{u},-\\mathbf{v})\\big]^{2} &=\\|\\mathbf{u}-(-\\mathbf{v})\\|^{2}=\\|\\mathbf{u}+\\mathbf{v}\\|^{2} \\\\\n",
    "&=(\\mathbf{u}+\\mathbf{v}) \\cdot(\\mathbf{u}+\\mathbf{v}) \\\\\n",
    "&=\\mathbf{u} \\cdot(\\mathbf{u}+\\mathbf{v})+\\mathbf{v} \\cdot(\\mathbf{u}+\\mathbf{v}) \\\\\n",
    "&=\\mathbf{u} \\cdot \\mathbf{u}+\\mathbf{u} \\cdot \\mathbf{v}+\\mathbf{v} \\cdot \\mathbf{u}+\\mathbf{v} \\cdot \\mathbf{v} \\\\\n",
    "&=\\|\\mathbf{u}\\|^{2}+\\|\\mathbf{v}\\|^{2}+2 \\mathbf{u} \\cdot \\mathbf{v}\n",
    "\\end{aligned}$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$\\begin{aligned}\n",
    "\\big[\\operatorname{dist}(\\mathbf{u}, \\mathbf{v})\\big]^{2} &=\\|\\mathbf{u}\\|^{2}+\\|-\\mathbf{v}\\|^{2}+2 \\mathbf{u} \\cdot(-\\mathbf{v}) \\\\\n",
    "&=\\|\\mathbf{u}\\|^{2}+\\|\\mathbf{v}\\|^{2}-2 \\mathbf{u} \\cdot \\mathbf{v}\n",
    "\\end{aligned}$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Suppose $\\mathbf{u} = (1, 4)$ and $\\mathbf{v} = (-2, 2)$, visualize the vector and distances."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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db927dqljIyMOl3/kUce0fr1670++q+L8vJyde7cWU888YSmT59e7+s0BL8vYIXXhRufH1vR1goALDz++OPav3+/9uzZo7feekujRo2qVViNJqWl0sqV0pw57mFVOTlK27tS/bVNHc7LqzykWbNmKSsrS9nZ2XV6no0bN+qBBx5oUK0LFixQUlKSpk6d2qDrAAgN5rACAOrs++/NXNXjx92PJyZKYz96RB3K/q0XHPdVHT96VLriig56+eWXdejQoTotfFq5cmWD63U6nXr55ZcVF8c/e0A44v9cADiHESNG8JHdWcXF0qpVpguAp+7dpWubbVST/5mrchUpxlGhirPnjh41/w3VCKfnXFkA4YXACgCotcxM6dNP3Y8lJ0sTJki9LnbKcdndUkGBYiW11HGdzalVgRUA6oPACgCotZEjpa++kkpKzP3LLpOuucaEVi1YaPpZndVaRwmsAPyCwAoAqLWmTaWrr5Y2bJCuu06qmopaUiL9v/8n5edXPbaVI6fqz2fOSIWFkkuXKQCoNQIrAMDLmTPSd99JvXt7n+vfX7r8crPAqsrf/ma+yEVr5bjdz8kxu18BQF0RWAEAVZxOaft2acUKs8CqZUupfXv3x8TEeITV06elhx92G12VzJQAV0ePElgB1A99WAEAkqSTJ6V//tO0qyoqMuF10SKzi1WN/ud/TFNWD810UnExFVX3mccKoL4YYQWAKFdRIW3ZIq1Z4507HQ4pL0867zwfX7x/v/T88ybheohxONUqpUCHzt4nsAKoLwIrAESxo0fNiOr+/e7HY2Olq66Shg0zf/bpN7+Rysp8nr64zXF16C+1bi21a+efmgFEHwIrAESh8nLpgw+k9eu9P/Lv0EGaPFlq1eocF/n8c+nddy2nA1S6sut+6dqG1wsguhFYASDKHDhgRlWPHHE/Hh9vWlYNGGAWVp3TzJmWUwEAwN8IrAAQRQ4flubMMQuqXF1wgTRxotSsWS0vtHq1tG2b94UAIAAIrAAQRdq0kS66SMrONvcbNZLGjTN9VR2OWl6kokK67z6poCBgdQKAK9paAUAUcTjMDlWJiVKPHuZT/SuuqENYlaT58828gjoqKJAOHTr34wDAEyOsABChdu2SOnb0aPIvqUkT6d57TauqOgVVyewm8Mtfem0SUJNNm8xWrnl5ppbf/rYezwsgqjHCCgARJj9f+te/pHnzzFRTK02b1jM0zp5dp7AqVfdylUzezc2tx/MCiGqMsAJAhHA6pS++kJYtq55e+uGH0iWX+GlL1JMnpUcfrfPc1dat3e8fPVrDRgQAYIHACgARIDdXWrq0ejFVJadT2rvXT4H1kUdq7Lnqi1VgvegiP9QDIGoQWAEgjDmd0scfSytWmI/bXbVoIU2aJHXu7Icn2rPH9MOqfJJGjcx/a9GHNSVFSk6uHphli1YAdUVgBYAwdeKE2QBgzx734zEx0pAh0vDhZjMAv/jVr6pHV+PiTFCtDK2u4uK8tmp1OMwoa2WdBFYAdUVgBYAwU1Ehbd4srVnjlQ3Vtq3ZVrVdOz8+4fbtZmJs5ZM1aWL2b/3sM+/HehZ0lmtgzckx30OtdtMCABFYASDsvP22tHOn+7HYWGnECDOyGhvrxydzOk0PrMqP/pOSpMxMadQo68c3bSqVl0tnzrgddp3HWlZm1m+1aOHHOgFENN7fAkCY6d3b/X7HjiZTXnmln8OqZCbHfvGFCa7JydJLL5l5BlZPlJpqdiKoqPA6ZbXwCgBqi8AKAGHm4oulnj2lhARp/Hjpjjukli0D8ETl5SYJ5+ebsPrTn0rTp5vmriUl3o8vLTWPsZgW0KqV+30CK4C6YEoAANhUSYn56LxNG+9z115rcmHTpgEsYO5ckywTEqSBA6U//9kcX7zYuyWBJDVvboZ7u3WTvvzS7VRSktS4cfVMAQIrgLpghBUAbOi776QXXpDeeMO6c1RqaoDDamGhNGuW6UXVtq307rtmGkBpqfTRR9ZfM3as+e+gQZanXacF5OT4uV4AEY3ACgA2UlRkBjD/+U8zupqbK61cGYJCnnpKOnXKJOPVq01nAMmE1YQE78c3bixNmGD+PHiwmULgoXVrc5lu3aS0tADWDiDiMCUAAGzi66+ljAyvBfbauVMaPdp8rB4Ux45Jjz1mFlr9+98mYVZavdqMvnoqLjZtCiTpiissF2WNGSONGxeYkgFENkZYAaAB0tPT5XA43G7Z2dlex9LT031eIz9fWrhQeust77B6+eVm4X3Qwqok/fd/m6Hep582SdnVokXW27O2a1f9mX+vXibUOp1uD6HvKoD6YoQVABogPT3dK4x2795dOz0bpVpwOqXPPzc9+T0HLZs2lSZOlC680I/F1sa335otWG+7Tbr/fvdzRUXWmwU4HKZdQaXERLP46vvvA1srgKhBYAWAEDh9Wlq6VPrmG/fjDoc0YIB09dXWU0UD7le/MsO6c+aYYlxt3my2Y/VsadW4sXTNNe7H+veXdu8ObK0AogaBFQCCbM8eaf58785QLVtKkyZJnTqFpCzjBz8wi6es0vLKlWb+gqfCQmn4cPdjQ4dK77xT41M5nd6ZGACsEFgBIMjatjWfmlcG1pgYadgw6aqrpLhQ/1a+/Xbf55YsMZsJeOrSxbvHVp8+lpfYt0/65BPTh/XYMemBB8zGWQBQE6bAA0CQNWpkGv9LZq3S3XdLo0bZIKzWJD/ftDHwFBNT3c7KVe/elsOnp05J27aZ4FpYSD9WALVj51+PABD2Tp6UmjXzPt69uzR1qulHGhar5zdsMK0KPDsEpKZ6z1+VzLzWdu28DrtuHiCZkdbzz/djnQAiUjj8mgSAsFNWJq1ZIz33nLRjh/VjevQIk7AqSe+9J+XleR8vLDTzGaxYTAto0cL9e2aLVgC1wQgrAPhZWVmMXnzRzNGUpMxMqWvXIPdS9beMDKmiwvt4WpoZZbXy2mteO17FxUnNm1f/3TAlAEBthMt7ewCwvZIS01P19Om4qkAmmYHJTz4JXV0Ndvq0dYuq2FjTLNaXFi0sU7rrtABGWAHUBiOsAOAH335rFtGfOiVJ1YuNkpJMT/1LLw1ZaQ23fr11/9WUFGns2DpfrnXr6mkSp0+b/QgaNfJDnQAiFoEVABqgsNBM77QaQe3VyyygT0kJfl1+tWyZ956xkkmagwfX+XKeC69ycszGWADgC4EVAOrpq6/M1E7PtUgxMU5NnWoWVUWE5ctNl39Pl1xSr6FRq04BBFYANSGwAkAdOZ3SwoXSl196n+vTR2ratDRywuqxY9KBA97H4+LMtlz10Ly5mf5auQcB81gBnAuLrgCgjhwO74XxzZpJP/qRyXAOh8VoZLjKyrIeRU1OlsaMqdclY2KkVq2q7xNYAZwLI6wAUA9XX202fsrNlQYONDtVJSSEuqoAyMw036Sn4mKpf/96X7Z1a+nwYfNnAiuAcyGwAkANnE6TzTwHGRMSpBtuMB9td+gQmtqCYsUK6+N9+0rx8fW+bOU8VodDSkw0DQgiMvAD8AsCKwD4cOyYtHixCavTpplw5apz59DUFTQHD8qtoWylhIR6z1+tdOml0oUXSi1bNij3AogSBFYA8FBeLm3cKK1bZ7ZYlaQvvgjzXqr1sXatCafFxe7HExPNnIgGOO88cwOA2iCwAoCLQ4ekRYuq51dWWrVKuvhiMwUgamRkWPdfLSuTrrgi+PUAiFoEVgCQyWBZWWZktaLC/VznzuYT8KgKq5JJ6VYGDYrCvwwAoURgBRD19u41o6rHj7sfT0w0nZv69vWevxrx9uyxHl1t1KjB81cBoK7owwrAr/bs2SOHw6E9e/bUeMwOiotN16ZXXqkOq6dO7dEf/uBQs2Z7NHOm1K+fCat2/R4CZu1a61HUuLgGz1+tVFgoZWdLH3wg/fvf1vkYACRGWAFEqe+/NyHp9Gn345XtqyZNkpo0CX5dtrFkiZSf733c4ZB69fLLUxw8KL35ZvX9yy6TGjf2y6UBRBhGWAFEpbg47374l15qdquSonAKgCun04ywWhk2zGxV5QeVvVgrsYEAAF8IrABCokuXLnI4HBoxYkTVsaysLDkcDjkcDr322mt+fb57771XDodDycnJys/PV/v20uDB0t69G/SHPzj0hz84lJv7qpKT/fq04Sk723Ty95SUJE2c6LenSU01l6xEYAXgC4EVQMQrL5emT58uSSosLFRGRoYkaeRI6fTphZKkRo0aacqUKSGr0VbWrDGjrJ4cDr/NX628nOsoK4EVgC8EVgARy+mUtm+XZs+WevUaqq5du0qSFi40ITU+Xvroo39LkiZNmqQmUT1p1cWSJWZFlKfEROmii/z6VK6BNSfHOicDAIuuAISN06dP69ChQ+d8XI8ePXTypMld331nji1ZIk2bdov+9KfHlJmZqcLCQn322Wfau3evpOoR2KhXUSG9/771uREj/D65t1Wr6j+XlkqnTknNmvn1KQBEAAIrANsoLy+v8fyCBQt01113nfM6mzY5tXq1CUCVvv1WGjRouqTHlJ+fr8zMTG3atEmS1KJFC11zzTUNKT1yfPml9fGUFL/OX61ktfCKwArAE1MCAIREYmKiJKmoqKjq2Ll6nN55551yOp0+b0ePOjVnjlPLl7uH1dhYM191woQe6tOnjyQzLeBf//qXJOnmm29WfHy8f7/BcLV6tdn2y1N5uTRqlN+fjk4BAGqDEVYAIdGhQwdlZ2friy++0MGDB5WcnKznnnuuXtcqL5c2bJDWrTN/dtW+vTR5cnUwmj59uj7++GMtXLhQZWeDGdMBXCxaJLm8iajSuLHZo9bPkpNNt4C8PHOfwArACiOsAELixhtvlCTl5+era9euatOmjbKzs+t8nYMHpZdeMgvbXcNqfLw0bpw0Y4b7KN60adMUGxtbFVYvvPBCDR48uEHfS8QoL5e2bLE+N3p0wJ6WTgEAzoXACiAk7rrrLs2aNUtt27ZVYmKipkyZoldffbXWX19WJq1cKf3jH9KRI+7nunaV7r3X9Fn17HHftm1bjXL5aPvWW29tyLeh9PT0qt6xlbfs7GyvY+np6Q16nqDYvt3sqOCpcWPpuusC9rSugfXYMe9RcgBgSgCAkIiLi9OTTz6pJ5980u34zTffXKuvdzhMBwDXNkiJiWZU9Yoral7MvmLFivqUbCk9Pd0rjHbv3l07d+7023MEzapVUnGx9/GSEjMJOEBcA2t5uXTihHv3AAAgsAIIS7Gx0qRJZoS1okLq3l269lqJVqoNsGSJ9Q5XLVtK7doF7Gk7dZKGDzfBtXVrqUWLgD0VgDBFYAUQFpxO71HTdu3MxkvnnSf16uX3FqHRpaRE2rbN+ty4cQF96pYtAzqACyACEFgB2FpBgbR8udS2rTRkiPf5oUODX1NE+vBDM6fCc0pAkybShAmhqQkAziKwAvCrLl26yOmxv6bVsXNxOk0P+2XLpPx8accOqUcPqXlzf1brzVet9fkewsrKlebdgaeiIvN5PQCEEF0CANjOmTPSW29JCxeasCqZrgBLlrDXfMAsWWK9YUD79uYzewAIIUZYAdiG02k6K61Y4d27vnlzM9DHPNUAKCyUvvjC+7jDEdTpABUVpkPA0aNShw4soANQjcAKwBZOnDCDfLt3ux93OMzc1REjzGYACIBNm6RGjbw7BDRuHPAFV5VycqQXX6zuwXrDDdJllwXlqQGEAQIrgJCqqDCbK61ZI5WWup9r08Zsq3r++aGpLWqsXFk998JVUZF01VVBKaFpU/NaqMSOVwBcEVgBhMzRo2br+gMH3I/HxpqP/4cONX9GgC1ZYr29VNeupmdYEMTHm2kfx4+b+wRWAK4IrABC5ttvvcNqx45mQwB2OgqSvDwpO9v7eEyM2YkhiFq1IrACsEaXAAAhM3CgWYQumRG28eOln/yEsBpUH3wgJSV5H09NDdr81UquW7SeOmW9SyyA6MQIK4CQiYkxc1RXrjSL0Zs1C3VFUei998woq6fCwqDvyuAaWCWzEKtDh6CWAMCmGGEFEHB79khvv209TbJ1a+nWWwmrIZOR4b7aqVLPnlJKSlBL8QysTAsAUIkRVgABU1RkRk8rt6jfuFG68srQ1gQXJ0+adxOeYmOl664LejktWphR98r8TGAFUIkRVgABkZ0t/e1v1WFVkrKypGPHQlYSPK1fbz1/NSVFGjs26OXExrpvqpWTE/QSANgUI6wA/Co/X1q+XPr8c+9zl1wiJScHvyb4sGyZ2QfXU1GRNGhQ8OuRmRZQObLKCCuASgRWAH7hdJrdPZctkwoK3M+dd540caLUrVtoaoMPy5ebH5ynyy6TEhODX4/c57GeOWNeS7zJAUBgBdBgubnS0qXW7TwHDJCuvjpk+Qe+HD0qHTrkfTw+3rRuCBGrTgGdO4emFgD2QWAFUG9Op5mjunKld8/Mli3NBgCdOoWmNpxDVpZ5F1FS4n48KUkaPTokJUkmsLZta/7burXUpEnISgFgIwRWAPWWlyetWOGeeWJiTPvO4cOlOH7D2FdGhvX81ZISqW/f4NdzVvPm0j33hOzpAdgUXQIA1Fvjxu6DcW3bSnfdZaYAEFZtbuVK6+P9+plpAQBgI/yTAqBB+veXvv5a6tpVGjLEtCaCze3fL5044X08MTGk81cBwBcCK4BzKiuT3n9fuugi760yHQ7pttvMfxEm1q41o6ieE48TEqRRo0JTEwDUgCkBAGq0f7/0979L69ZJixaZ8OqJsBpmMjLMBGRP5eVS797Br6cGpaXe68IARB9GWAFYKimR1qyRtmypbtWZk2NGWkeODG1taACnU1q1yvqcTeZ0lJRI//mP6bx14oQ0blzI9jEAYBMEVgBevvtOWrLEbDXvKinJrOJGGNu923tnB0lq1Mj0IbOB+HjzGqycscCOVwAIrACqFBWZNlUff+x97uKLpQkTpNTU4NcFP1q71vQe8xQba5v5qw6H6cG6b5+5T2AFQGAFIMms9LdqzZmaKl17rdSzZ2jqgp8tXizl53sfj4kx70pswjOwOp3MlQaiGYEViHJ5edKyZdKXX3qfu+IKaexYMxUAEcDpNKvnrAwfbqtE6LpFa0mJdPq01LRp6OoBEFoEViDKrVjhHVabNpUmTpQuvDA0NSFAvv7aus1DcrJ03XXBr6cGrVq53z96lMAKRDPaWgFRbvRo0y9eMgNsAwdK991HWI1Ia9ZIFRXW566+Ori1nIPrCKtkOlQAiF4EViDKNWliPvZv2VK64w5p/HjTPx61k56eLofD4XbLzs72Opaenh7qUs381cJC7+ONGtnuHUpKihn4rcTCKyC6EViBKHH8uLR1q/W5Pn2ke+6ROnYMbk2RID09XU6n0+2WlpbmdSzkgbWiQtqwwfrcyJG2mr8qVXcKqERgBaIbc1iBCFdRIW3cKGVlmemLbdpInTu7P8bhkOL4bRDZPv/cOpSmppoJyzbUurW0Z4/5c06OeS1bdeQCEPn4Xx+IYIcPS//4h9nYqHKtzeLFZrtLRJnVq60XXJWV2XbrMtcR1rIy740sAEQPxlSACFRWJq1fL33wgfcam9RUs0FAfHxoakOILFpkfvCemjaVOnUKfj214Lnw6uhRqUWL0NQCILQIrECE2bfPZJNjx9yPJyRIY8ZI/frZbroiAq2szPcE5tGjg1tLHVS2tkpMNOE1Nja09QAIHQIrECFKSsynvlu3mv7wri66yLTZPO+80NSGEPv4YzOk7jnC2rix2cbMppKSpF/+0nSy4E0WEN0IrEAE+PZbackS6dQp9+NJSaZN1aWX8g9+VFu1Siou9j5eUmLb+auVeJMFQCKwAmHv0CHp9de9j/fqJU2YYPpZIsotXmzCqafWrU3bCACwOQIrEObatZMuvljascPcr/yUt0eP0NYFmygpkbZvtz43blxwawGAeiKwAhFgwgRp926pZ0+za1WjRqGuCLaxZYt5QXiOsDZpYl44ABAGCKxAmHA6Te/3tDTvQJqaKv3sZ3z8DwsrV0oFBd7Hi4qk4cODX089fPqpdOSIaWt1wQXSkCGhrghAsBFYgTBw6pRZVPXtt1LfvtYbExFWYWnJEusNAzp2lJo3D3499ZCVVb1pQFwcgRWIRgRWwMacTtOmavXq6k90t22TLrlE6to1tLUhDBQUVE9uduVwhNV0gNatqwPr0aOhrQVAaLA1K2BTOTnSK69Iy5a5Tz+MiTHngHPauNF6QnPjxmG14Mp1x6uTJ9laGIhGjLACNlNebnJGVpb5s6vzz5cmT6YTEWppxQopL8/7eGGhdOWVwa+nnlwDq9Np3rCdf37o6gEQfARWwEYOHTLbqh4+7H48Lk4aNUoaNMiMsAK1snSpVFHhfbxbN9MlIEy4BlbJTAsgsALRhcAK2EBpqbRunRlZ9cwXXbpIkyaFzfoY2MWZM9KuXd7HY2LMPr1hpEULU3bl/xvMYwWiD4EVsIH586XvvnM/lphoeqr26cO2qqiH9983e/N6TvhMTTUvrDASF2dCa+XcbQIrEH0IrIANDBrkHljT0swgWBh9agu7Wb7cjLJ6KioKy75QrVoRWIFoxmw4wAbS0qRLL5WSk6UpU6Rp0wiraKDMTLNCydPFF5sXWphxnceam2tyN4DoQWAF/MTpdKp3796aO3euz8cUFEj791ufGz9eatdugR56aJI6dGiv1NRU9e3bV/Pnz69THQsWLNCkSZPUvn3N15g5c6ZmzJhRp2sjTJw4Ie3bJ+FAhPIAACAASURBVEnKkuRwud1usQjL4XBU3bp06RK8OuvAc+EVrd2A6EJgBfzknXfe0cmTJ3XLLbd4nXM6Tf/2558381WtdspMTpb+9renlZqaqmeeeUaLFy/WyJEjdcstt+i5556rdR1PP127a8yaNUtvvPGGdlktzEF4W7fOuv+qFLbL6606BQCIHsxhBfzk2Wef1W233ab4+Hi342fOmE9nv/qq+th770nXX+99jSVLlqhly5ZV90eNGqWDBw/q6aef1s9//vNa1VHba3Tp0kXDhg3TCy+8oKeeeqqW3yXCwrJl5nNzK61aBbcWP2ne3Cy+qtxltnLnKwDRgRFWwA927dqljRs36sYbb6w65nRK27ebUVXXsCqZT2ut5uC5Bs1KV1xxhY7WYTipLteYMmWK3njjDVVY9epE+Fq+3Pe5MG3kGxNjNs24/XZp1ixp9OhQVwQgmBhhBfxg9erVSklJUe/evSWZ0Z8lS7xbVTkc0uDB0siRksdArE8bN27UxRdf3KD6fF1jyJAhOnLkiD7//POq2hHmjhyJ2M/LL7001BUACBUCK+AH27ZtU8+ePSXFaMsWadUq7/aXrVubEaL27Wt/3dWrV2vRokV65ZVX6l1bTdfo1auXYmNjtXXrVgJrpFi7VkpIkIqLQ10JAPgNgRXwg8OHD6tJk5Z69dWqxdkqKjqtvLxDiomR+vWT+vY181m//tr9a3v06GF5zT179uiWW27R5MmTdfvtt9errnNdIy4uTk2bNtVhz71gEb4yMqz7r55VVjkJ9Ky6TDcBgFAhsAJ+cOJEkY4fT64Kq5K0Y8cCLVly1zm/1mnRK/PEiRMaP368OnXqpHnz5tWzptpdIzExUUU0tYwcq1a53U3wOH38+HG3+x988EGACwKAhgvP2feAzZx/fnOVlp6quh8fLz344J0qL3fK6az55qmgoEDXXXedSkpKlJGRoZSUlDrXU5drnDp1Ss2bN6/zc0S6ffv2aeTIkerZs6d69eql2bNnh7qkc9u7Vzp1yu2QZxOrDRs26Ouzw/y7d+/Wb3/72yAV5x+FhdL330sffih9/nmoqwEQLIywAn7Qs2d3bdiwSZLUtas0aZLUrFndr1NWVqabbrpJ33zzjTZs2KDWns0n/XyNnJwcFRQUKC0tre7FRri4uDg99dRT6tOnj86cOaO+fftqzJgxDV4AF1Br15reTy66SLrQ4dC3Z98cnTlzRpdcconat2+vffv2Wb5psrN586QDB8yfO3ZkIRYQLRhhBRqgcjrg0KFDdfDgXk2cmKMf/ah+YVWS7rvvPmVmZur3v/+9Tpw4oc2bN1fdis8uosnKypLD4VBWVla9r1Hpo48+ksPh0JAw3Fs+0Nq1a6c+ffpIkho3bqyePXvqQGVSOst1hyjXW3Z2tuXxgFu6VMrL8zr8eEKC2/OXl5dr7969cjqdmjlzZuDr8iPX9185Oda7zwKIPI6a3l1v2rTJ6fkPXLTKy8tTampqqMuAjRQVSadP56moKFVt2pTq5ptv1MyZMzV27Nh6X3Pq1Kk6cuSI5bn58+erbdu22rx5sx588EG9+uqrltto1uYalZ577jl99913euaZZ+pdczQ4fPiw7r//fr3yyitu0ytGjhxZp+usXbvW36W5+/TT6ndRrpo00cacHL355pvatWuXYmJi1K1bN02ZMkXDhw93+z7atGmjt956K7B1NsCXXzbRhx9WT2G56aZ9SkkpD2FFtce/I7DC66LaiBEjfL6zrzGwSuK961lZWVkaMWJEqMuAjTid0j/+kaV77hmh1FSpb9/7lZS0S5mZGQF93kceeUTr169vcPgpLy9X586d9cQTT2j69Ol+qi7y5OXlafjw4XrooYd0ww031Oprunfvrp07dwa4Mg+7dkm9e3vv+5uUJP35z1KYjaT68u230uuvV9+fPl3q1i109dQF/47ACq8LNz4DK1MCgHpyOKQuXUweOHNG2rJllpYvz9Kbb2YH9Hk3btyoBx54oMHXWbBggZKSkjR16lQ/VBWZSktLNWXKFN166621Dqshs2aN9fGYGGnUqODWEkCeU7LpygVEBwIr0AAJCdLvficlJ0uFhR3kdL6sO+44pMmT5dbiyp9WrlypiRMnNvg6TqdTL7/8suLiWHtpxel0asaMGerZs6df3iAE3JIl3qOrklmE5aPXbzhKTTVvEisRWIHoQGAFGug3v3Ed9Zmq4uLhysyUuneX0tPNXFc7mjZtmq666qpQl2FbGzZs0Ouvv641a9bo8ssv1+WXX67MzMxQl2XN6ZTWrbM+N3y4+TggQjgc7qOsBFYgOjC0AjRQfLz0z39K48aZHpGSWfdSVmamDr74ovTCC9IPfhBRuSHiDRs2LHxaPu3YIVVUeB9PSZH8MBpvN61bm16sUnWnAP7fAiIbI6yAH1x5pTR5spki4KqgQDpyRLrtNmnIEJMrAL9bs0Yqt1gpX1ERUfNXK7mOsJaWSidPhq4WAMFBYAX85LnnpMRE63P5+dKWLVK/ftJ993ltRgQ0zOLF1nNPUlLMThYRhoVXQPQhsAJ+0rKl9PTTJiNYcTrNlIFXX5U6d5Zeesl6UAyok4oKaeNG63NXXx2Rn5W3auV+PycnNHUACB4CK+BHd9xhekLWlBGKiqTcXOmBB6RevXxnDaBWPv1Uio31Pp6aKl17bfDrCYLkZPPtVWKEFYh8BFbAj2JiTFNzX1MDXOXnSzt3SqNHS1OmSAcPBr4+RKDVq6WSEu/jZWVSHXfiCieXXy4NGiRNmiQNGxbqagAEGoEV8LNLL5V++lOpUaPaPb6w0LTQ7NZNevRRid2QUSeLFlm/aJo1kzp0CH49QTJ6tHTNNVKfPlKbNqGuBkCgEViBAHjsMfePLM+ltNQE1yeeMLtnLV5s5rwCNSotlT76yPrcmDHBrQUAAojACgRASoo0Z46Za1cXBQXS4cPSLbeYfu/B3o4eYWbbNtMI2FPjxhE7fxVAdCKwAgEyebLpvWq1HuZc8vOlDRvMPL2f/9ws0gK8rFpl3c6quFgaMSLo5QBAoBBYgQB6+eXaLcCSzEBZTEz1VIKKCpNF5syROnUy17LazAhRbPFiMy3AU7t23s1KI5TTad7QHT4c6koABBKBFQigTp2k//7v2k0NKC01O2UNHiwNHGiCbqNGJrSePi3df79Z0LVlS+DrRhgoLjYtrTw5HGY1UhRYuVL63/81/Y8XLAh1NQACicAKBNivf137VcxFRdIHH0h33il99530xz9KF1xgAm9xsdnadeRI6eabGVGKeps3W7eiaNxYGj8++PWEgMNRPSPixAnrwWYAkYHACgRYfLzpzeo5yhoXZ/34wkIzmvruu9KsWdK335ps8rOfmU5FkvTOO6abwBNPWLfgRBRYscKs0vNUWChddVXw6wkB11kPTqd07FjoagEQWARWIAiGDpV+8APzkX8lh8P3VIGCAhNWn3nG3L/0UvPnnBzTs/WHPzTHH3zQjMAuWxbY+mFDS5eazQE8delS/c4mwrFFKxA9CKxAkDz7rPsnuDExpoNATaH1v//bjKJWio0128O//bb5CHT+fBNYJ06U7rknsPXDRvLzpa++8j4eEyNNmBD8ekKkZUv3bZDZohWIXARWIEhatDCjpCkp5n5xsQmrd95Zc2h99FHpD3/wPpecLE2dKq1fb7Z1nTkzcLXDZjZskJKSvI+npkbNgivJTLdp3rz6PoEViFwEViCIfvITKS2telQoP1+64QbTa7Wm0Prkk9Lvfud796vWrc20AUSJFSukvDzv44WF0rBhwa8nhFznsRJYgchFYAWCyOEwC7Aqpwbk50vPP28+9v/1r2sOrbNnm3mtbNkKLV1q3ZQ3La1uewJHANfAeuqU+eQCQOQhsAJB1quXdO+95hNdp9Msojpzxnzs/9BDNYfWF14wo7GE1ih2+rTpeeYpNtZMZo4ynvsjsPAKiEwEViAEHn20eiAsNtYsopLMx/5//GPNofXVV6W772bXq6j1/vvW81dTUqQxY4JfT4h5BlamBQCRicAKhEBystlqNTnZTAt49tnqc7/6ldm9xyqTSCa0vvmmdPvthNaotHy5GZL3VFRktkmLMs2bmzd9lQisQGQisAIhMnGiWR8TGyvt2iXt3Fl97mc/k/7v/2oOrf/6lzRtmlReHpx6YROZmdZzQi65xPcLJoLFxpr2VpUIrEBkIrACITRnjpSYaHar+vvf3c/dfbeZs1pTaF26VLrpJuv+8YhAx45JBw54H4+Li8r5q5VatzZ7JXTvLl14YairARAIBFYghDp2lB5+2HQPePVV7+D54x+bUFtTaH3vPbOLFvuoR4F169x3n6iUnByV81cr3XCD2c542jSzqxyAyENgBULsgQekTp1MS5733vM+f8st0ty5NYfWNWuka6+lpU/Ey8yUcnO9jxcXS/37B78em3Dd7QpAZCKwAiEWHy/Nm2f+7Lr4ytVNN0lvveU7tBYWSh98II0bZ9beIEJZvaORpL59pYSE4NYCAEFEYAVsYPBgafp0afVq330kJ00yC618tbwqLJS2bpWuvtqMuiLCHDpk5rB6SkiI6vmrAKIDgRWwidmzTSvN11/3/Zjx46VFi2oOrR9/LI0YYb1zJ/wvPT1dDofD7Zadne11LD09vWFPtHatGY73lJgojR7dsGtHGDbWACIPgRWwiebNTWj96KOaHzd6tLRsmQm3VoqKpM8+k6680nq6I/wrPT1dTqfT7ZaWluZ1rMGBNSPD+l1IWZl0xRUNu3YE+OYb6d13pZdekp55htAKRBoCK2AjP/6x9MYb537cVVdJK1b4Dq3FxdJXX5kV06dO+bdGhMiqVdbHBw5075wfpY4elT75RDp40LxR4xMGILIQWAEbcThqv+J5yBDzKXHlFq+eioul7Gxp0CDp+HH/1YgQ2LPHeri8USNp8uSgl2NHbNEKRDYCKxDG+veX1q+XmjSxPl9SIn33nRmE87WYC2Fg7VqzOYCnuDizyg4EViDCEViBMHfFFaal1XnnWZ8vLZW+/96E28OHg1sb/GTpUt+fcffqFdxabKpJE7P+rBKBFYgsBFYgAlx6qbRxo9me0mpKQVmZ2dGzf3/rnT1hY06nGWG1MmyYFMOvccm87l1HWflEAYgs/KYDIsTFF0ubN5tuA75C66FDJrTu3Rv8+lBP33xjvYVZcrJpzosqroH16FE6BQCRhMAKRJC0NLN5QKtW1gNv5eXSkSMmtO7eHfz6UA+rV/s+N2pU8OoIA66BtaREOn06dLUA8C8CKxBhLrjAhNY2bay7HVVUmA2TBgwwg3ewuSVLrLcuS0gw71BQhYVXQOQisAIRqHNn6cMPpXbtrBeXV1SYVlcDB5p+rbCpigqzos7KyJG174EWJQisQOQisAIRqn17M9Lavr11aHU6pZMnTT/XL74Ifn2ohS+/tJ6ImZIiTZwY/HpsLiXFfdtiAisQOQisQARr186E1k6drLehl8xOWEOHStu3B7c21MKaNWa1nKeKCjPCCi+eC68ARAYCKxDhWrc2ofWCC8y0Ryu5udLw4WYaAWxk0SKpqMj7eGqq1KVL0MsJB5WBNSbGzJigUwAQGSw+KAQQaVq0MC2vhg2Tdu2y7pJ05oxZdL5ihTR4cPBrhIfycvNDszJ6dHBrCSODBkn9+pnXvNWiQwDhiRFWIEo0bWo2F+jRw31HIFd5edKYMWa7V4TYJ59YTz5u3Fi69trg1xMmmjc3o6yEVSCyEFiBKNKkiVl0fumlUqNG1o/Jz5fGj5dWrQpubfCwapX1UHhJCfNXAUQdAisQZVJTpXXrpCuu8B1aCwqkyZOl5cuDWxtcLF5swqmnli2l888Pfj0AEEIEViAKJSebBegDBkhJSdaPKSiQbrjB9K1HkJWWStu2WZ8bOza4tQCADRBYgSjVqJFZYDV0qO/QWlgo3Xyz9K9/Bbe2qPfhh9YTjRs3liZMCH49YSYvz2yIsW6dtHChdWcwAOGFwApEscREKSNDGjGi5tB6223S/PlBLS26rVxp/uI9FRebHxZqtGuX9Pbb0tq1ZlOM48dDXRGAhiKwAlEuIcFMlxw71n2XIFeFhdKMGdLcuTVf609/+pMcDkfV7fXXX/d6TG5urpKSkqoe07t3bz98FxFm8WIzLcBT+/ZmDitq5GuL1j179sjhcGjPnj1V56yO2ZWvWsPpewDqi8AKQHFx5mP/666rObTee6/0j3/4vs5PfvITxbm0YrIKrAsWLFCRSzP8u+++u951R6SiIuu9ch0O6Zprgl9PGPLM9Dk5oakDgP8QWAFIMn0r5883C61qCq333y89/7z1+Xbt2ulalx6ha9as0aFDh9weM2/evKo/JyUl6dZbb21w7RFl0ybr9g2NG5t+YzinhASpWbPq+6HYojUrK0sOhyP4TwxEKAIrgCoxMeZj/6lTaw6ts2ZJTz9tff6uu+6q+nN5ebnmu0x+3b9/v9a77Epw0003qWnTpn6pPWKsWGGa4XoqKpKuuir49YQp12kBdQ2sXbp0kcPh0AiX+cKVAdThcOi1117zS42V7r33XjkcDiUnJyvf5We/YcOGqud89dVX/fqcQLghsAJwExMjzZkj3X57zaH197+X/vQn73Pjx49Xhw4dqu67jqi+8cYbqqioqLrvGm5x1tKlZltWT126SOedF/RywpVrYD150rqlrV1Mnz5dklRYWKiMjIyq4wsXLpQkNWrUSFOmTAlJbYBdEFgBeHE4pL/+VfrpT32H1oIC6bHHpPR09+MxMTG64447qu5v375dO3bskGQCa6UePXpo2LBh/i49vOXlSTt3eh+PiTETjFFrroHV6ZSOHQvs8zmdTpWVlVXdys++6bA65mno0KHq2rWrpOqQKkn//ve/JUmTJk1SkyZNAvsNADZHYAVgyeGQnnrKzFmtKbT++c/Sgw+aUFBpxowZiomp/vUyb948ffrpp/r888+rjjG6auGDD6z7i6WmSuPGBb+eMOarU0CgzJ07V/Hx8VW30aNHS5LlMSu33HKLJCkzM1OFhYXasmWL9u7dK6l6BBaIZnHnfgiAaOVwmI/9ExJMMC0o8H5MQYH07LNmiuXTT5uv6dSpk8aOHavlZ/d2ffPNN1Xi8plsQkKCfvSjHwXr2wgfK1aYUVZPhYVmhwfUWosWZmC6cgbK0aNSQ6ZL+xodrTRx4kR9+OGHVfe3bdume+65x+uYL9OnT9djjz2m/Px8ZWZmatOmTWe/jxa6hu4QAIEVwLmlp5tNBv7nf3yH1pdeMn3tn3/ehNa77rqrKrB+//33et6ltcD111+vlvQT9bZ0aXXCctWjh5SSEvx6wlhcnAmtlS2tjh6V0tJq97WJZ3cZc22/dq4epy1atFCLFi2q7uedfePRr18/r2NWevTooT59+ujjjz/WwoULtXnzZknSzTffrPj4+NoVDkQwpgQAqJUHH5QefdT3jlgFBabDwJ13msw1adIktWnTpuq86z/+TAewcOqU9P333sdjY6WJE4NfTwSob6eAykWDX3zxhQ4ePKhTp07pueee83N13io/+l+4cGFVQGY6AGAQWAHU2gMPSH/5S82h9a23pB//WIqJidPtt9/u9ZgLLrhAo0aNCmyh4Wj9euv+qykp0pgxwa8nArgG1txc8wlAbdx4442SpPz8fHXt2lVt2rRRdnZ2ACp0N23aNMXGxqqsrEySdOGFF2rw4MEBf14gHBBYAdTJffdJs2fXHFr//W9p2jTpJz+506t5+owZMyKqoXp6errbdrQOh0PZ2dlex9I92yl4WrZMOnPG+3hRkTRoUEBqj3TduklXX21ei/ffb+Zi18Zdd92lWbNmqW3btkpMTNSUKVOC0ge1bdu2bm/m2FQDqMYcVgB1dtddZk7rPfeY9UCeCgrMdMzi4m4qKalQXAT/pklPT/cKo927d9dOq/ZUNVm2zL3VQqXLLrMeecU5tW9vbpVOn67d18XFxenJJ5/Uk08+6Xb85ptvrvVzjxgxQk6rn+c5rFixos5fA0QDRlgB1MuPfiS9/HLNI60rVkiTJtm7abst5ORIHlvYSpLi46XJk4NfDwDYDIEVQL1NmybNm+c7tBYWSllZ0oQJtZ8/GJWyssyQtaekJPOZNgBEOQIrgAa54Qbp7bdrDq0bN5p1Q1bTByApI8N6/mpJieTSFgkAolUEzywDECwTJ5qFVlOmWPdpLSyUPvzQDBauWuV756yo5WveYr9+ZloAGqSszGzNmpvbRYWFTrcpwV26dKnXXNNQ8FVrOH0PQH0xwgrAL665Rlq82HcYLSqStm+Xhg+33swpah04IJ086X08MdFMAEaD7N5tdmt78UXzpspqqjAA+yOwAvCbq6+Wli/3vSlTUZH0+efSsGG1X7Ed8daulWUbhYQE5q/6QbNm7puH1WUDAQD2QWAF4FdXXimtXCmlplqfLy6Wvv5aGjrUemAx6ixdaj3kXF4u9e4d/HoizHnnufdfJbAC4YnACsDvBg82A4eNG1ufLy6WvvnG9MM/fjy4tdnOmjXWxwcPNtuyokEcjvpv0QrAPgisAAKiXz+z22iTJtbnS0rM/MIBA6I4ROzebT26mpTE/FU/8gysrE8Cwg+BFUDAXH65tGGD1LSp9fnSUmnvXql//yhdDLNmjRRj8Ws4Job5q37UqlX1n4uLrTuIAbA3AiuAgLrkEmnTJrP4xeHwPl9WJh08aELr/v3Bry+kliyR8vO9j8fESBdfHPx6IpTrCKsUxSP6QBgjsAIIuB49pC1bpBYtrAcUy8qkw4dNaP3+++DXFxJOp9nhyspVV1mne9QLgRUIfwRWAEFx0UXS1q1Sy5bWobW83ASJ/v2l774Lfn1Bt3OnmRPhKTnZ7MQAv0lNdd+JjcAKhB8CK4Cg6drV7HjVpo31AviKCrMj0YABUnZ28OsLqtWrfa/+Yf6qX9EpAAh/BFYAQdWpkwmt7dpZ98t3OqUTJ0zLqx07gl9f0CxZYvas9dSokXThhcGvJ8K5BtacHDoFAOGGwAog6Nq3N6G1fXvfofXkSWnIELMzVsSpqJA++MD63MiRzF8NANfAWlrKphVAuCGwAgiJtm1NaO3cWYqPt37M6dNmG9ft24NbW8B9/rl1KE1NZf5qgLRtK3XoIPXpI40bJyUmhroiAHVhMbYBAMHRqpXpHjB0qOmhX1Li/ZjcXLNofvVqM7c1IqxZY1ojeCorMyOs8LuOHaU77wx1FQDqixFWACHVooW0ebOUlua+57urvDxp1Chp48bg1hYwixZJRUXex887z0zyBQC4IbACCLmmTc2OWL16+f6oNj9fGjtWWrcuuLX5XVmZGVa2MmZMcGsBgDBBYAVgC02aSOvXS717m4XyVvLzpQkTpFWrglubX23fbj1pt3Fj880BALwQWAHYRmqqtHatWRjjK7QWFEiTJ0vLlgW3Nr9ZtcpsaO+ppIT5q0FUXGy9bwMAeyKwArCV5GSzwGrgQPfdiVwVFEhTpkiLFwe3Nr9YvNh6dVnr1mYpOwImN1d64w3pmWekxx+Pgs0pgAhCYAVgO40aSe+9Z1pa+QqthYXS1KnSggXBra1BSkp89+gaNy64tUShxETpm29MuzSJHa+AcEJgBWBLiYlSRobpDlBTaP3xj6U33wxubfW2dav1qrImTaTx44NfT5RJTDQL/CoRWIHwQWAFYFvx8dK770rXXGOmClgpLDT9NV97Lail1c/KlWY+g6eiImn48ODXE4Vcd7wisALhg8AKwNbi4szH/hMn1hxa77tPeuml4NZWZ4sXW28Y0LGjaUiLgHMNrCdOsPAKCBcEVgC2FxtrPva/8caaQ+svfiE991xwa6u1wkJpxw7v4w4H0wGCyDWwOp3SsWOhqwVA7RFYAYSFmBjzsf8tt9QcWn/7W+kvfwlqabWzcaN1r67Gjc2cBwSFa2CVmBYAhAsCK4Cw4XCYj/3vuMN3aC0okB55RHrsseDWdk7vvWd2PvBUVCRdeWXw64lSLVua11ElAisQHgisAMKKwyE9+6x07701h9Y//Ul6+OHg1lajjAypvNz7+AUXmC4BCIq4OKl58+r7OTmhqwVA7RFYAYQdh0P685/NnNWaQutTT0n/9V9mrmKgpKeny+FwuN2ys7O9jqV//bX3F8fESNddF7jiYIlOAUD4IbACCEsOh/nY/ze/qTm0/vWvJtgGKrSmp6fL6XS63dLS0tyPZWQoPTXV+4tTU9kwIARcA+upU9Y75QKwFwIrgLD2yCPmo/+atnGdM8dMIQjkSGuN3ntPysvzPl5UJA0ZEvx6opznwiumBQD2R2AFEPb+67/MnNWaQuvrr0szZkgVFcGtTZKUmWn9xD17+h4eRsBUBtbkZKlLlxC+kQFQa3GhLgAA/OEXvzBbb/7qV6a9laeCAuntt83Hv//8p+ntGhQnTkh793ofj4uTJk0KUhFw1aKF9OtfSykp7h0DANgXI6wAIsa995oOAjWNtL77rjR1qvWGUwGxfr11/9XkZGnMmCAVAVcxMWb6MGEVCB8EVgAR5c47pb//vebQmpkpTZkSpG05ly2TcnO9jxcVSQMGBKEAAAh/BFYAEee226RXX605tK5caT6RLykJcDHLllkfv/xyM4cBAHBOBFYAEenmm6U33vAdWgsLpXXrpAkTAtjW6MgR60afCQnS5MkBelIAiDwEVgAR6/rrpXfeqTm0bthgppJaLdRqsKwsE049NWokXX11AJ4QtVVeLn30kZkeMneu9Mknoa4IQE0IrAAi2nXXSf/5j+/uUUVF0ocfSiNHSvn5fn7yjAzpzBnv4yUlUt++fn4y1EVMjGmPu3WrtHu3dOBAqCsCUBMCK4CIN26ctHSpaWNkpajIjLBddZV1vqy3lSutjw8YYNpaIWQcDqlVq+r7bNEK2BuBFUBUGDlSWr7cd2gtLpa+/FIaNkw6fdoPT7hvn9n301NiIv1X+xGbdAAAIABJREFUbcJ1x6ujR9lAALAzAiuAqDFsmLRqlenBaaW4WPr6a7Nb6smTDXyytWutR1Hj45m/ahOugbWw0Hr3XAD2QGAFEFUGDTJroRo3tj5fUiJ98400cKB07FgDnmjJEusE5HRKl13WgAvDX1wDq8S0AMDOCKwAok7fvtL770tNmlifLy2V9uwxU02PHKnnk6xda3186FCz4gchR2AFwge/NQFEpd69pY0bpaZNrbfoLC0101AHDJAOHarjxZ1O6z5ZSUnSxIn1qhf+17ix+665BFbAvgisAKJWr17S5s1Ss2bWobWsTDp4UOrfX9q/vw4XLi+3Ph4Tw/xVG3E4vBdeAbAnAiuAqNa9u7Rli9SihfUn9WVl0uHDJrTu2VPLi5aXm/1fPcXFST16NKRc+JlrYM3JoVMAYFcEVgBRr1s3s3lAq1bWobW83Iy+DRggffvtOS7mdPoeYb3qKuuhXISMay/WkhI/tTQD4HcEVgCQ1KWLCa1t20qxsd7nKypM14ABA6SdO2u40FdfWR9PSWH+qg2x8AoIDwRWADirY0cTWs8/37qFqtNp+rMOGiTt2OHjIqtXWx+vqGD+qg15BtYG998FEBDsDQgALs4/34TWQYPM/vKlpe7nnU6zgdWQIdL69RYtVZcssb5wcrLUtWtAakb9paRIP/iBmcPcqpV71wAA9sEIKwB4aNNG2rpV6tzZbExl5fRp6corpY8/djlYUSFt2GD9BVdfzfxVm7r8cjO6TlgF7IvACgAWWrUy3QO6dZMSEqwfk5srDR9uHidJ+vRT61VbqanSddcFrFYAiHQEVgDwoXlzadMm0/oqMdH6MXl5ZvB0wwZJa9Z4zyGQTG+skSMDWisARDICKwDU4LzzTBi9+GLfoTU/Xxo3Tsqa+71UXOz9gGbNpA4dAlsoAEQwh7PmLsm0UJbkODvv7Bx/V4gyvC6iS36+NGqU9NlnUlGR9WOSVaACpUjy+OX5ox9Jc+cGvEbUX16eaWl19Kh5f9G9u3+vz+8LWOF14cXnRP+wGGFNT08PdQm2YYe/CzvUINmnDjuww9+FHWqQAldHSoq0dq3Ur5+UlGT9mAIlex9s3Fi69tqA1FSTSP95+LuGl16S/vlPaflyMxU5Utnh5yHZow471GAXdvm7cDgc6T7PhcMIq8PhCOm7Dzu9Awr134VdarBDHbwu7FeDv+tYvny57r//fpWXl+vOO+/Ub3/7WxUVSRMmSJs3S4WFlhVIkv6jSfqBFpt5BHv3ejf8DLBI/HkEsoZ586Rdu8yfW7aUfvYz/9cghf73hR1+Hnapwy41SLwuPOqwHGUNixFWAAi28vJyzZw5U8uWLdOOHTs0f/587dixQ40amVG4q67yPdIqSVP0Lz2n+0yPrCCHVdSd64/oxAmzTg6AfRBYAcDC1q1b1a1bN11wwQVKSEjQ1KlTtWjRIkmmzdWSJaY7QLLFLABJcipGv9GfNe/CR4JYNerLNbBWVEjHj4euFgDeCKwAYOHAgQPq2LFj1f0OHTrowIEDVffj46WlSx0qKHDITAOovBlOxapIKbpt7Qw5HI6qj/5gT56D4EePhqYOANZqnMM6aNAg50kbbKxcUFCgZF/DGEF6fkkhraFSqP8u7FKDHergdWG/GvxZx5kzZ5Sfn6+2bdtKknJzc1VUVKTWLskmOzu7TtdMS0trcF21FWk/j0DX4HRKJ04kqPJNR1JSmZKTy/1agxT63xd2+HnYpQ671CDxuqiUnZ3tcw4ri65q+fxS6CdFS6H/u7BLDXaog9eF/WrwZx2bNm1Senq63nvvPUnS448/Lkl68MEHvR5bUSFdf720eLFUPcrqXkNSkvT449L99ze4tFqJtJ9HMGp49lkzf1Uyba2mTfNvDVLof1/Y4edhlzrsUoPE68KjDhZdAUBt9e/fX9988412796tkpISvfXWW5o0aZLlY2NipHffle6+2/f1Cgul3/1O+vOfA1QwGqxVq+o/MyUAsBcCKwBYiIuL01//+leNGzdOPXv21A9/+EP16tXL5+MdDunFF2u+ZkGBlJ4uPfqof2uFf7jOYz15UiopCV0tANzFhboAALCrCRMmaMKECbV+vOu6quRkE1A9FRRITzxhdnB99FH3r0FoeS68ysmR2rcPTS0A3IXFCOsjj9AWppId/i7sUINknzrswA5/F3aoQbJPHQ884LvlVUGB9Mwz0m9+Yxb7BIJd/h7sUEdta4iGTgF2+HlI9qjDDjXYhY3+Lv7g60RYLLqyg6ysLI0YMSLUZcBmeF3ASvfu3bVz5049+qgZTbUaaZVMoJ0xQ5o9m5FWOygrk/70J7OITpIGD5bGjfPf9fl9ASu8Ltz4/E3IlAAACJDf/15q1Eh65BHrbVwLCqSXXzbTA158kdAaanFxUp8+5mfWqpXUoUOoKwJQicAKAAE0a5bZGevBB32H1nnzTGh95RXTcQChc911oa4AgBV+NQJAgN1/v/T006YXq5WCAmnBAunWW6Vy//WqB4CIQWCth7/85S9yOBw6duxYqEuBDcyaNUs9evTQZZddpuuvv16nTp0KdUkIoeXLl2v37t3q1q2bnnjiiarj99wjPf98zaF18WLphz80cykRGfbt26eRI0eqZ8+euv322zV79uxQlwQbKS8v11133aXrGNo/JwJrHe3bt08rV65Up06dQl0KbGLMmDH64osv9NlnnyktLa1qRyREn/Lycs2cOVMdOnTQjh07NH/+fO3YsaPq/E9+Ir30Us2hdflys2tWaWmQikZAxcXF6amnntJXX32lv/3tb3r++efdXhOIbrNnzyZP1BKBtY5++ctf6sknn6zaTg0YO3as4uLMdPBBgwZp//79Ia4IobJ161Z169ZN8fHxSkhI0NSpU7Vo0SK3x0yfLr32Ws2hdfVqaeJEGteHktNpNg9oaGurdu3aqU+fPpLMfvE9e/bUgQMH/FAhwt3+/fuVkZGha6+9NtSlhAUCax0sXrxY7du3V+/evUNdCmzqlVde0fjx40NdBkLkwIED6tixY9X9Dh06WIaTH/5QevNN36G1sFBav1665hqpqChQ1cKX//xHevxx025s2TL/Xffw4cPavn27Bg4c6L+LImz94he/0JNPPqkYVlrWCl0CPIwePVqHDx/2Oj516lQtWbJEK1asCEFVCLWaXheV/fMee+wxxcXF6dZbbw1ydbALq77Wvj6N+cEPpIULpZtusu7TWlgobdokjR4trVjhexMC+J/TWT267a/NA/Ly8vTwww/r//7v/9SkSRP/XBRha+nSpWrdurX69u2r999/P9TlhAUCq4dVq1ZZHn/llVe0e/fuqtHV/fv3q0+fPtq6davatm0bzBIRAr5eF1lZWZKkuXPnaunSpVq9ejXTRaJYhw4dtG/fvqr7+/fv1/nnn+/z8RMmSO++a8KrVWgtKpK2bZNGjpTWrJFSUgJRNTy57niVn29uDfm7Ly0t1ZQpUzR69GjdcMMNDS8QYW/Dhg1a/P/bu/fgKOt7j+OfB8IlEORiQBANiDagqKAWpYgaFGKRFkVFISKigHoKjLcyPXrquLbivWpFz9EeGQ8VxErVioAXBAIqIGI9NRyVQBUQBQwGjGSzuZA9f/xKspu9kGQvzy+779fMzrC7D7tfnAy8ffbZ32/JEi1fvlxlZWXy+XyaNGmSFixY4PZo1mKnq0ZquBNF3759tWnTJmVnZ7s3FFxXWFgon8+n22+/XWvWrFH37t3dHgkuqqmpUW5uriTpiy++0JAhQ/Tiiy9q4MCBUX9fYaE0ZkzkHbHat5dOOcUc16lTfGdGqOJic8nGYdddJ51wQvNey+/367rrrlO3bt102WWXsaMRQjzxxBN69913tXTpUrdHsUHEMz5cOAHEaObMmfrxxx81atQoDR48WDfffLPbI8ElGRkZeuqpp7Rr1y6dfPLJuuqqq44Yq5KUl2c+9o90Fs/nk/7v/6Rzz5VYNS3xAs+wSrFdFvDBBx/ohRde0KpVqzRt2jQNHjxYy5cvj21AIA1xSUAzbd++3e0RYIlt27a5PQIscskll+iEE07Qli1bmvT7zj3XrA4wcqR08GDo85WV0pYtZn/7Dz6QunWL08AI0bmz2Z0sHtexDh8+vO7aZvaMRziDBw/Wrbfe6vYY1uMMKwBY4pxzpDVrpEjfyamqkv75T3Mc+5YkjuMEn2WN1xevADQfwQoAFjnzTOm998xZvnCqq6UdO6QhQ6S9e5M7WzppGKzRv+4BINEIVgCwzOmnm4/9u3Y1Z/saqq6Wdu0y0frtt8mfLx0EBmtlpVRW5t4sAAhWALDSwIFmHdZI0VpTY2J1yBApYCUtxEk8v3gFIHYEKwBYqn9/aeNGKTtbCrcZzqFD0p49Jlq/+ir586WyhivUlZS4MwcAg2AFAIudeKKJ1u7dpdatQ5+vrTUxdfbZEgtWxE9WVvDWuZxhBdxFsAKA5fr2lT76SOrZU8oIsxhhba30/fdm9YAvvkj6eCnJccx/7+7dzeUZOTluTwSkN9ZhBYAW4PjjTbQOHWquXa2pCX7e75dKS806re+9J516qjtzppLJk8NfPwwg+TjDCgAtRK9e5vKA44+X2rQJf8yBA2YTgn/8I7mzpSJiFbAHwQoALcgxx5ho7dvX7MYUTlmZdN550scfJ3U0AEgYghUAWpjsbOnDD6WTToocrT/+KOXlSRs2JHU0AEgIghUAWqCuXaV166QBA6R27cIfc/CgNHKk9P77yZ0tVbHbFeAeghUAWqjOnU2Mnnpq5GgtL5cuvlhatSq5s6WKoiLpr3+V/vM/pT/9ye1pgPRFsAJADDwejxzHCboVFxeHPObxeBLy/p06SWvWSIMHS+3bhz/G65V++Uvp7bcTMkJK+/ZbafNmsw7r3r1mswYAyUewAkAMPB6P/H5/0C03NzfksUQFqyR17CitXm12vIoWrePGSUuXJmyMlBS449Xh9W4BJB/BCgApIDNTWrHCLGkVuENToIoK6aqrpNdeS+5sLVmPHsH32aIVcAfBCgApol07afly6YILokfrNddIf/lLcmdrqQLPsEps0Qq4hWAFgBTStq20ZImUny916BD+mIoK6frrpRdeSO5sLVG7dlKXLvX3CVbAHQQrAKSYNm2kV16RLrkkerTedJM0b15yZ2uJAi8LIFgBdxCsAJCCWreWXnpJuuyy6NE6a5b0X/+V3NlamsBgLS2VqqvdmwVIVwQrAKSo1q3Nx/5XXx09Wn/9a+mJJ5I7W0sSGKx+v7Rvn3uzAOmKYAWAFNaqlfnYf/LkyNHq9Up33SU9+GByZ2spGq4UwGUBQPIRrACQ4hzH7NQ0fXr0M62//710773Jna0lyM42/w0PI1iB5CNYASANOI70+OPmmtVoZ1offticbfX7kzufzTIypKOPrr9PsALJR7ACQJpwHPOx/x13RI/WP/5Rmj2baA10eD3WjIzgs60AkiPD7QEAAMn1u9+Z9UXnzDGXAjTk9ZqVA3w+ae5cAk2SLrpIGjXKrMnailM9QNIRrACQhv7jP0y03nOPCdSGvF7p+eelykrp2WeJtOxstycA0lua/xUEAOnr1782lwhE2sbV65VefFGaMkWqrU3qaAAQhGAFgDQ2a5ZZgzVatL7yilRQIB06lNzZAOAwghUA0tyNN5plr6JF6xtvSOPHSzU1yZ0NACSCFQAg87H/c89Fj9a33zZbvabr1qQHDkhFRdLKldJrr7k9DZBeCFYAgCTzsf/8+dGjddUqacwY82WsdFNUZC6PeO896R//CP9lNQCJQbACAOqMHy+99FLkaK2okN5/X7r4YrPsVTphi1bAPQQrACDI2LHmTGK0aP3wQ7M2aTqdZSRYAfcQrACAEKNHS0uWRN4Ry+eT/v53KS9POngwqaO5pksXqU2b+vsEK5A8BCsAIKyRI6Xly6WOHcM/7/NJn34qnXeeVFaW+Hnuv/9+OY5Td3vhhRdCjikrK1NmZmbdMYMGDYrb+ztO/RatEsEKJBPBCgCI6IILpHfeiRytlZXS559L555rvkWfSNdff70yMuo3aAwXrIsXL5Yv4OLaG2+8Ma4zBF4WUFIi+f1xfXkAERCsAICohg0zqwNkZYV/vrJSKi6WfvYzqbQ0cXP06tVLY8aMqbu/atUq7d69O+iYBQsW1P06MzNT11xzTVxnCAzWior0uRwCcBvBCgA4orPPltaskY46KvzzVVXSP/9pjispSdwc06dPr/v1oUOHtGjRorr7u3bt0tq1a+vujx8/Xl26dInr+/PFK8AdBCsAoFHOPNMsadW5c/jnq6ulHTukIUOkPXtCn580aVLQNaiNvW3fvr3uNUaPHq3jjjuu7n7gGdWFCxeqtra27n5g3MYLwQq4g2AFADTaaadJ69ZJXbuaLyE1VFMjffONidZvvon/+7dq1Uo33HBD3f1PPvlEn332mSQTrIcNGDBAw4cPj/v7d+oktW9ff59gBZIj48iHAABQ75RTpA0bzLWtpaWhXzyqqZF27zbRumGDlJNjHh8zZox69uzZ5Pfr3OCU7tSpU3XffffVnU1dsGCBrr76ahUVFdUdk4izq5KJ9B49pJ07zX2CFUgOghUA0GS5udLGjdLQodL330sBn8RLkg4dkvburY/WE06QJk6cqIkTJ8b83jk5OcrPz9dbb70lSXrxxRdVVVVV93zbtm01efLkmN8nksBgPbxSQLizzQDih0sCAADN0q+f9NFHJuBatw59vrZW2rfPROvWrfF978AzqDt27NDTTz9dd3/cuHHKzs6O7xsGOOUUKT9fmjRJmjkzYW8DIADBCgBotj59TLT27CllhPnMrrbWXDZwzjlmvdZ4GTt2rI455pi6+4FrrybqcoDD+vUzl0OcdJJZNYGzq0DiEawAgJgcd5yJ1t69w0er3y/t32/Wad28OT7vmZGRoSlTpoQ83q9fP1144YXxeRMA1iBYASAGHo8nZBmm4uLikMc8Ho/boyZUr17mmtacHKlNm/DH/PCD2RHrf/83Pu85bdo0OQ1Ob06dOjXkMQAtH1+6AoAYeDyekBjt37+/tmzZ4s5ALurRw0TrsGHS9u1mM4GGysqk8883O2f99Kexvd9JJ50UtO4qgNTFGVYAQNwcfbRZFeAnP5Hatg1/zI8/Snl50vr1SR0t7qqqzFqzn3wSukoCgPjiDCsAIK66djWbC5x/vvTFF1JlZegx5eXSqFHS8uXmuJbm00+lV1+tv3/88VICFyYA0h5nWAEAcXfUUWYb19NOC94ZKlB5uTR6tLRyZXJni4euXYPvs4EAkFgEKwAgIbKypDVrpDPOiBytXq80dqz0rz0AWozu3YPvE6xAYhGsAICE6dDBnEEdMkTKzAx/jNcrXX659MYbyZ0tFu3bS4E7xhKsQGIRrACAhMrMlFasMEtaRYrWigrp6qulV15J7myx6NGj/tcEK5BYBCsAIOHatZOWLTOrA0SL1muvlRYtSupozRYYrKWlUk2Ne7MAqY5gBQAkRdu20pIlUn6+uVQgnIoKaepU6c9/Tu5szREYrLW10r597s0CpDqCFQCQNBkZ5mP/MWOiR+vNN0v//d/Jna2pGn7xqqTEnTmAdECwAgCSqnVr6aWXzBetokXrLbdITz+d3Nmaont3KXAXWK5jBRKHYAUAJF2rVtL8+dKECdGjdfZs6bHHkjtbY7VpE7weK8EKJA7BCgBwRatW0nPPSVOmRI/Wu++WHnggqaM1GisFAMlBsAIAXOM40lNPSTfeGDlavV7pvvskjyepozVKYLDu3y9VVbk3C5DKMtweAACQ3hzHfOzfvr305JMmUBvyeqVHHpEqK6X77w++dtRNxx4r9eljwrVHD8nvd3siIDURrAAA1zmO+di/XTsTppGi9cknJZ/PBK4N0TpggLkBSCwuCQAAWMPjkX772+iXB/zpT9LMmZzNBNIJwQoAsMqdd0q//33kHbG8Xul//keaPt0s2A8g9RGsAADr3H67uTQgWrQuWiRNnky0AumAYAUAWGnGDOmPf4wera+9Jk2cKB06lNzZIvF67ZkFSCV86QoAYK3p080XsW6+2azJ2pDXKy1dKl1xhfTXv5qtX5Nt717p7bfNOqwHD0o33CDl5CR/DiCVcYYVAGC1yZOlefOin2l95x1p7Fipujq5s0kmkr/80sSqxAYCQCIQrAAA602cKC1YEDlaKyqkwkLpkkvMWq3J1LVr8JldghWIP4IVANAiXH659Je/RI/WDz6Q8vPDXz6QKK1aSd27198nWIH4I1gBAC3GL38pvfpq5HVaKyqkjRuliy4Kv/lAojQMVtaIBeKLYAUAtCg//7m0ZEnkaPX5pE8+kS64oP660kTr0aP+116vVF6enPcF0gXBCgBocS66SHrrLaljx/DP+3xSUZF03nlSWVni5wkMVonLAoB4I1gBAC3SeedJK1ZIWVnhn6+slD77TBo2TNq/P7GzEKxAYhGsAIAW62c/k1atkjp1Cv98VZW0das0dKj0/feJm6NzZ6lt2/r7BCsQXwQrAKBFGzJEWrtWOuqo8M9XVUlffSWdfXbjQvLRR6VNm5o2g+MEn2UtKWna7wcQHcEKAGjxBg82S1p17hz++epqaedOE7e7d0d/rZ07zWYFTd1iNTBYWSkAiC+CFQBi4PF45DhO0K24uDjkMY/H4/aoKe/UU6UNG8xC/o4T+nxNjfTttyZav/km8uvcdJP0+efS3LlNe//AYK2sTM6XvYB0QbACQAw8Ho/8fn/QLTc3N+QxgjU5BgyQPvxQ6tbNLOjfUE2NtGeP9NOfSjt2hH+NgQPN6/z7v5vAbazDwdqpk3TiieZSBADxQbACAFLKT34iffSRlJ0dPloPHTIf2Q8ZIn35ZfjXmDXLnCW9+ebGv29OjvSb30h33CFde23wZgIAYkOwAgBSzgknmGg95hipdevQ52trpX37zBextm4Nfb6gQMrIkN58U3r77ca9Z0ZG5G1jAcSGYAUApKScHBOtvXqZmGzI75dKS6VzzjHXrAbq0sVsA1tTI02ZYrZ8BeAeghUAkLJ69zbR2rt35Gjdv9+s51pUFPzcjBlmU4IffpDuvTc58wIIj2AFAKS0nj1NtPbpI7VpE/6YH36Qhg+XPvmk/rERI6T27c3Z1SeflLZsSc68AEIRrACAlNe9u1k9oF+/4B2pApWVSeefL23caO63amWWuGrb1nwB67rrjry2qs9n3ueNN6R588JfHwug6QhWAEBaOPpos05rbm7kaD14ULrwQmndOnN/2jQTrrW10ubN0oIF0d/D7zdf1Pr4Y+nrr4+8SQGAxiFYAQBpo0sXsyPWKadI7dqFP6a8XMrPN9u99u0rnX56/eOzZplrXiPJzDTrsB7WmK1gARwZwQoASCtHHSW9954J0fbtwx9TXi6NHi29+66J1Kws87jPZ9ZZjabhFq0AYkewAgBSUmVl5OeysqTCQunMMyNHq9crXXqp1KGDuSTg8Gu+9FL9da7hBAbrvn1mowIAsSFYAQApqaBAOvVU6Yknwp/p7NBBWrnSrMMaacF/r1eaNCl416yKCvNYTU343xMYrLW10vffx/bnAECwAgBS1HPPmaWq7rjDLG11wQXm7KjXW39M+/ZmJ6vhwyNHa0WFtHdv8PPffmuWugonMFglLgsA4oFgBQCkpK5dpWeekT791GzBunatOeuanS1dfbW0apU5A9qunbRsmVkdoEOH8K9VWSlVV9ffLy+X7r5b+uab0GO7dw++T7ACsSNYAQApbeBAaf166ZVXTEzW1kovvyxddpm5f9ttZlOAv/1NuvjiyNFaVRV6/6abQo9r29asRnBYSUn8/ixAuiJYAQApz3Gkyy+Xtm+XfvMb8/F+RYVUWio99ZS5jrV/f3Mm9pxzIkdroJoaafVqs+5qQ6wUAMQXwQoASBuZmdK995ozqpdcYsK0psZc1/rll+a5devM/cZEq9crXX+9id9AgcFaWhp8OQGApiNYAQBp5/jjpddfN2dHTzxR6tjRPO7z1S+HdXgpqyMpK5M8nuDHAoPV7zfLWwFoPoIVAJC2zj/fnG196CGzQ1Xg7lc+X+Neo6JCmjtX+uKL+scCg9Vxou+OBeDICFYAQFpr3VqaMcNc3zppkrlswHGa9ho+nzR5sjmbKpmVCMaNM1/KuususxUsgOYjWAEAkNStm1m7dcMG6ayz6i8TaAy/X/rsM+nPfzb3MzKkQYOkXr2kNm0SMy+QTghWAAACnH662Xr1+efNmdJIGwo0VF4u3XJL4z7+9/v9GjRokObPny9JWrx4scaOHavevXsrKytLZ511lhYtWhTDnyI2jZ1nxowZmjp1qgsTIt0QrAAANOA40vjx0o4dZp3WzExz6cCR+HzSrbce+biXX35Z+/fvV0FBgSTpscceU1ZWlh5//HEtWbJEI0aMUEFBgebOnRvjn6R5GjvP7NmztXDhQm3bts2VOZE+HP/hC27Ci/pkOiksLFReXp7bY8Ay/FwgnP79+2vLli1uj4E42rFD+rd/k9asCd7aNZzMTLOL1tChwY8H/n1x7rnnKi8vT3PmzJEk7du3T9nZ2UHHFxQUaP369frqq6/i9cdotKbMM3LkSA0aNEh/+MMfkjliyuDfkSARrx7nDCsAAEfQp4+0fLn0xhtS377Rr2+tqJCuvdasvXrggFRcLL3/vrRnT3tJ0rZt27Ru3TpdeeWVdb+nYRxK0hlnnKHvXNp1oCnzXHHFFVq4cKFqG7sOGNAMGW4PAABAS3HhhdLWrdLTT0u//a3ZnrXhlq2StHu39Nhj5rlDh8xjHf61E8HKlSvVsWNHDRo0KOp7rVu3TqdYtLxApHmGDRumvXv3qqio6Ih/JqC5OMMKAEATZGSYL1d99ZU0YUL4L2WVl0u/+13wda/795vlAj7++GOdfPLJatUq8j/BK1eu1Ouvv64ZM2bEe/xmiTbPwIED1bqgKiDPAAAKW0lEQVR1a23cuNGFyZAuOMMKAEAzZGdL8+ebL1ndcIM581peXv98VZW0eLF06aXm/oEDbSVJe/bsCfuR+2Hbt29XQUGBLr30Uk2ZMqXZ8/3www/avXv3EY8bMGBA1OePNE9GRoa6dOmiPXv2NHdU4IgIVgAAYnDGGdLf/y4tWiTNmmWuYa2okGpqpM8/l04+WcrNlSoqWqu8XPL5fHWXBzRUWlqq0aNHKycnRwsWLIhprsWLF2v69OlHPC7al68bO0+7du3ka+zWYEAzcEkAADQwe/ZsDRgwQKeffrrGjRunAwcOuD0SLOc4UkGBtHOnNHNm/TJYlZXS66+bL2BJUkmJ1K1bt7A/U16vV7/4xS9UVVWlZcuWqWNTdi4IY9q0afL7/Ue8RdKUeQ4cOKBu3brFNC8QDcEKAA2MGjVKmzdv1qeffqrc3Fw98MADbo+EFqJjR+nhh6XNm80XtDIzzTJYq1eb57/7zix71nBpqJqaGo0fP15bt27Vm2++qR49ergwffPmKSkpkdfrVW5ubhInRLohWAGggfz8fGVkmCumhg4dql27doU9znGcsLfi4uKwjyN99OsnvfOO9Le/SZ07m+1ea2v98nrNGqw7d+5USUlJ3fG/+tWvtHz5ct19990qLS3Vhg0b6m6VlZV1xxUWFspxHBUWFiZ0/sbOI0mbNm2S4zgaNmxYQmdCeou6ccD69ev9DX8w09XBgweVlZXl9hiwDD8Xqe+uu+7SiBEjNGrUqJDnRowY0aTXWn34NBvSyq5dmaqurlHXrvvVpUuWqqurdeWVV2rGjBnKz8+XJE2YMEF79+4N+/sXLVqknj17SpI2bNigO++8U88//7z69u2bsJkbO48kzZ07V19++aUef/zxhM2Tyvh3pF5eXl7E/7Nnp6tGYicKhMPPRcs1cuTIsN9qnjNnji7919e658yZo02bNunVV19t0hlSdrpCOIF/X9xyyy3atm2bli1b1qTXuOeee7R27Vpr/ufn0KFD6tOnjx588EFNmjTJ7XFaJP4dCRLxL1pWCQCQlt59992oz8+fP19Lly7VypUr+TgfcTd79mz1799fxcXFTbr2c926dbr99tsTOFnTLF68WJmZmZowYYLboyDFEawA0MBbb72lhx56SGvWrIm4/BAQi+OOO07z5s3T7t27mxSsK1asSOBUTef3+zVv3ry6a76BROEnDAAamDlzpiorK+uuWx06dKieeeYZl6dCqkmFs5ITJ050ewSkCYIVABrYtm2b2yMAAAKwrBUAAACsRrACAADAagQrAAAArEawAgAAwGoEKwAAAKxGsAIAAMBqBCsAAACsRrACAADAagQrAAAArEawAgAAwGoEKwAAAKxGsAIAAMBqBCsAAACsRrACAADAagQrAAAArEawAgAAwGoEKwAAAKxGsAIAAMBqBCsAAACsRrACAADAagQrAAAArEawAgAAwGoEKwAAAKxGsAIAAMBqBCsAAACsRrACAADAagQrAAAArEawAkAMPB6PHMcJuhUXF4c85vF43B4VAFosghUAYuDxeOT3+4Nuubm5IY8RrADQfAQrAAAArEawAgAAwGoEKwAAAKxGsAIAAMBqBCsAAACsRrACAADAagQrAAAArEawAgAAwGoEKwAAAKxGsAIAAMBqBCsAAACsRrACAADAagQrAAAArEawAgAAwGoEKwAAAKxGsAIAAMBqBCsAAACsRrACAADAagQrAAAArEawAgAAwGoEKwAAAKxGsAIAAMBqBCsAAACsRrACAADAagQrAAAArEawAgAAwGoEKwAAAKxGsAIAAMBqBCsAAACsRrACAADAagQrAMTA4/HIcZygW3FxcchjHo/H7VEBoMUiWAEgBh6PR36/P+iWm5sb8hjBCgDNR7ACAADAagQrAAAArEawAgAAwGoEKwAAAKxGsAIAAMBqBCsAAACsRrACAADAagQrAAAArEawAgAAwGoEKwAAAKxGsAIAAMBqBCsAAACsRrACAADAagQrAAAArEawAgAAwGoEKwAAAKxGsAIAAMBqBCsAAACsRrACAADAagQrAAAArEawAgAAwGoEKwAAAKxGsAIAAMBqBCsAAACsRrACAADAagQrAAAArEawAgAAwGoEKwAAAKxGsAIAAMBqBCsAAACsRrACAADAagQrAMTA4/HIcZygW3FxcchjHo/H7VEBoMUiWAEgBh6PR36/P+iWm5sb8hjBCgDNR7ACAADAagQrAAAArEawAgAAwGoEKwAAAKxGsAIAAMBqBCsAAACsRrACAADAagQrAAAArEawAgAAwGoEKwAAAKxGsAIAAMBqBCsAAACsRrACAADAagQrAAAArEawAgAAwGoEKwAAAKxGsAIAAMBqBCsAAACsRrACAADAagQrAAAArEawAgAAwGoEKwAAAKxGsAIAAMBqBCsAAACsRrACAADAagQrAAAArEawAgAAwGoEKwBE8Oijj8pxHO3bt8/tUQAgrRGsABDG119/rRUrVignJ8ftUQAg7RGsABDGbbfdpocffliO47g9CgCkvQy3BwAA2yxZskS9e/fWoEGDoh4XLWbDPef3+2OeDQDSkRPtL9D169f7KysrkziOvQ4ePKisrCy3x4Bl+Lloue644w6VlpaGPD516lQtXLhQjzzyiLKysjRhwgQ9++yz6ty5c8ixI0aMaNJ7rl69utnzouXj7wuEw89Fvby8vIhnAaIGqyROB/xLYWGh8vLy3B4DluHnIvUUFRXpoosuUocOHSRJu3bt0rHHHquNGzeqZ8+ejXqN/v37a8uWLYkcEy0Qf18gHH4ugkQMVi4JAIAAp512mr777ru6+3379tWmTZuUnZ3t4lQAkN740hUAAACsxhlWAIhi+/btbo8AAGmPM6wAAACwGsEKAAAAqxGsAAAAsBrBCgAAAKsRrAAAALAawQoAAACrEawAAACwGsEKAAAAqxGsAAAAsBrBCgAAAKsRrAAAALAawQoAAACrEawAAACwGsEKAAAAqxGsAAAAsBrBCgAAAKsRrAAAALAawQoAAACrEawAAACwGsEKAAAAqxGsAAAAsBrBCgAAAKsRrAAAALAawQoAAACrEawAAACwGsEKAAAAqxGsAAAAsBrBCgAx8Hg8chwn6FZcXBzymMfjcXtUAGixCFYAiIHH45Hf7w+65ebmhjxGsAJA8xGsAAAAsBrBCgAAAKsRrAAAALAawQoAAACrEawAAACwGsEKAAAAqxGsAAAAsBrBCgAAAKsRrAAAALAawQoAAACrEawAAACwGsEKAAAAqxGsAAAAsBrBCgAAAKsRrAAAALAawQoAAACrEawAAACwGsEKAAAAqxGsAAAAsBrBCgAAAKsRrAAAALAawQoAAACrEawAAACwGsEKAAAAqxGsAAAAsBrBCgAAAKsRrAAAALAawQoAAACrEawAAACwGsEKAAAAqxGsAAAAsJrj9/vdngEAUorjOG/5/f6fuz0HAKQKghUAAABW45IAAAAAWI1gBQAAgNUIVgAAAFiNYAUAAIDVCFYAAABY7f8BKAXMAsv/NPUAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 864x864 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize = (12, 12))\n",
    "\n",
    "vects = np.array([[1, 4], [-2, 2], [2, -2]])\n",
    "colr = ['red', 'blue', 'blue'] \n",
    "cordt = ['$(1, 4)$', '$(-2, 2)$', '$(2, -2)$']\n",
    "vec_name = ['$\\mathbf{u}$', '$\\mathbf{v}$','$\\mathbf{-v}$']\n",
    "\n",
    "for i in range(3):\n",
    "    ax.arrow(0, 0, vects[i][0], vects[i][1], color = colr[i], width = .08, \n",
    "             length_includes_head = True,\n",
    "             head_width = .3, # default: 3*width\n",
    "             head_length = .6,\n",
    "             overhang = .4)\n",
    "    ax.text(x = vects[i][0], y = vects[i][1], s = cordt[i], size = 15)\n",
    "    ax.text(x = vects[i][0]/2, y = vects[i][1]/2, s = vec_name[i], size = 22)\n",
    "\n",
    "ax.text(x = -1, y = 3, s = '$\\|\\|\\mathbf{u}-\\mathbf{v}\\|\\|$', size = 15)    \n",
    "ax.text(x = 1.5, y = 1, s = '$\\|\\|\\mathbf{u}+\\mathbf{v}\\|\\|$', size = 15)    \n",
    "\n",
    "\n",
    "\n",
    "############################### Dashed Line #######################\n",
    "line1 = np.array([vects[0], vects[1]])\n",
    "ax.plot(line1[:,0], line1[:,1], c = 'b', lw = 3.5,alpha =0.5, ls = '--')\n",
    "\n",
    "line2 = np.array([vects[0], vects[2]])\n",
    "ax.plot(line2[:,0], line2[:,1], c = 'b', lw = 3.5,alpha =0.5, ls = '--')\n",
    "\n",
    "###################### Axis, Spines, Ticks ##########################\n",
    "ax.spines['left'].set_position('center')\n",
    "ax.spines['right'].set_color('none')\n",
    "ax.spines['bottom'].set_position('center')\n",
    "ax.spines['top'].set_color('none')\n",
    "ax.xaxis.set_ticks_position('bottom')\n",
    "ax.yaxis.set_ticks_position('left')\n",
    "\n",
    "ax.minorticks_on()\n",
    "ax.tick_params(axis = 'both', direction = 'inout', length=12, width=2, which='major')\n",
    "ax.tick_params(axis = 'both', direction = 'inout', length=10, width=1, which='minor')\n",
    "\n",
    "ax.axis([-5, 5, -5, 5])\n",
    "ax.grid()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that if $\\big[\\operatorname{dist}(\\mathbf{u},-\\mathbf{v})\\big]^{2} = \\big[\\operatorname{dist}(\\mathbf{u}, \\mathbf{v})\\big]^{2}$, $\\mathbf{u}$ and $\\mathbf{v}$ are orthogonal.According to equations above, it must be \n",
    "\n",
    "$$\\mathbf{u} \\cdot \\mathbf{v} = 0$$\n",
    "\n",
    "This is one of the most important conclusion in linear algebra."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Suppose there is another vector $w = (2.5, 2.5)$, let's plot over the graph again."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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tmrdurXOOOMMSWa/+BNPPFHbt28/6uNYYY1/27Zt07x583TRRRdFu5SYQGCtg9mzZ6tNmzbq1q1btEuBRb3yyiu68MILo10GomT79u1q165d1e22bdv6DSdXXim9+Wbg0OpyScuWSRdcIJWUhKtaBPLee9Ijj5hxYx9+GLrn/fXXX/XVV1/prLPOOuq5niusycnJyszMDF0hsITbbrtNjz76qJK40rJWmBLg5bzzztOvv/7qc3z06NGaM2eOPv744yhUhWgL9nNxZH7eQw89JLvdrquvvjrC1cEq/M21DvRuzKWXSrNmSSNH+p/T6nJJq1ZJ550nffxx4E0IEHpud/Xqdqg2DygsLNS9996rv//977V6e997QgDv6sWXuXPnqmXLljrzzDO1fPnyaJcTEwisXj755BO/x1955RVt2bKlanV127ZtOuOMM7R27Vrl5uZGskREQaCfi6VLl0qSpk6dqrlz52rRokX8xZLA2rZtq59//rnq9rZt23TMMccEPH/oUOn990149RdaS0qkL76QBg6UFi+WWGSLDM8dr4qKzEdDvveHDx/W5ZdfrvPOO0+XXXZZrR7j2RJAO0D8WbFihWbPnq358+eroKBAJSUlGjt2rKZNmxbt0iyLdeha6tChg3bt2qX8/Hzl5+erbdu2+vLLLwmr0IIFC/TXv/5Vs2fPloNlsITWo0cP/fDDDzp8+LDKysr01ltvafjw4UEfM3iwNG9e4BXUkhLpm2+k/v2lQ4fCUDR8hHKLVrfbrQkTJujEE0/UlVdeWevHMYM1vj3yyCPatm2b8vPzde+992rQoEGE1aMgsAINdPPNN+vQoUMaPHiwTjvtNN1www3RLglRYrfb9cwzz2jbtm1VAaVr165HfdyAAeZt/0CreCUl0nffSX36SExNC79QBtYVK1bojTfe0OLFizVx4kSddtppmj9/ftDHVFZW6pDHv05YYQVoCai3/Pz8aJcAi9i8eXO0S4CFDB06VMcdd5w2btxYp8f16WOmA5x3nlRY6Ht/aam0caPZ337FColt5cMnO9vsThaKPta+fftW9TbXds/4Q4cO1eiHZoU1vp122mm67bbbol2G5bHCCgAWcdZZ0qefSoHySVmZ9N//mvPYtyR8bLaaq6yhuvCqtlJTU3XxxRerX79+6tatG61ngFhhBQBLOeMMafly07PqNTtektlQ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\n",
      "text/plain": [
       "<Figure size 864x864 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize = (12, 12))\n",
    "\n",
    "vects = np.array([[1, 4], [-2, 2], [2, -2], [2.5, 2.5]])\n",
    "colr = ['red', 'blue', 'blue', 'green'] \n",
    "cordt = ['$(1, 4)$', '$(-2, 2)$', '$(2, -2)$', '$(2.5, 2.5)$']\n",
    "vec_name = ['$\\mathbf{u}$', '$\\mathbf{v}$','$\\mathbf{-v}$', '$\\mathbf{w}$']\n",
    "\n",
    "for i in range(4):\n",
    "    ax.arrow(0, 0, vects[i][0], vects[i][1], color = colr[i], width = .08, \n",
    "             length_includes_head = True,\n",
    "             head_width = .3, # default: 3*width\n",
    "             head_length = .6,\n",
    "             overhang = .4)\n",
    "    ax.text(x = vects[i][0], y = vects[i][1], s = cordt[i], size = 15)\n",
    "    ax.text(x = vects[i][0]/2, y = vects[i][1]/2, s = vec_name[i], size = 22)\n",
    "\n",
    "ax.text(x = -1, y = 3, s = '$\\|\\|\\mathbf{u}-\\mathbf{v}\\|\\|$', size = 15)    \n",
    "ax.text(x = 1.5, y = 1, s = '$\\|\\|\\mathbf{u}+\\mathbf{v}\\|\\|$', size = 15)    \n",
    "\n",
    "############################### Dashed Line #######################\n",
    "\n",
    "line1 = np.array([vects[0], vects[1]])\n",
    "ax.plot(line1[:,0], line1[:,1], c = 'b', lw = 3.5,alpha =0.5, ls = '--')\n",
    "\n",
    "line2 = np.array([vects[0], vects[2]])\n",
    "ax.plot(line2[:,0], line2[:,1], c = 'b', lw = 3.5,alpha =0.5, ls = '--')\n",
    "\n",
    "line1 = np.array([vects[1], vects[3]])\n",
    "ax.plot(line1[:,0], line1[:,1], c = 'k', lw = 3.5,alpha =0.5, ls = '--')\n",
    "\n",
    "line2 = np.array([vects[2], vects[3]])\n",
    "ax.plot(line2[:,0], line2[:,1], c = 'k', lw = 3.5,alpha =0.5, ls = '--')\n",
    "\n",
    "###################### Axis, Spines, Ticks ##########################\n",
    "ax.spines['left'].set_position('center')\n",
    "ax.spines['right'].set_color('none')\n",
    "ax.spines['bottom'].set_position('center')\n",
    "ax.spines['top'].set_color('none')\n",
    "ax.xaxis.set_ticks_position('bottom')\n",
    "ax.yaxis.set_ticks_position('left')\n",
    "\n",
    "ax.minorticks_on()\n",
    "ax.tick_params(axis = 'both', direction = 'inout', length=12, width=2, which='major')\n",
    "ax.tick_params(axis = 'both', direction = 'inout', length=10, width=1, which='minor')\n",
    "\n",
    "ax.axis([-5, 5, -5, 5])\n",
    "ax.grid()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Use SciPy built-in function, construct two $2\\times 2$ matrices for holding head and tail coordinates of the vector."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "a = np.array([[1, 4], [-2, 2]])\n",
    "b = np.array([[1, 4], [2, -2]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([3.60555128])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "distance = sp.spatial.distance.pdist(a, 'euclidean'); distance"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([6.08276253])"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "distance = sp.spatial.distance.pdist(b, 'euclidean');distance"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Verify by NumPy ```.norm```."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "def dist(u, v):\n",
    "    a = np.linalg.norm(u - v)\n",
    "    return a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAKoAAAAPCAYAAAB0p1TfAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAHIElEQVRoBdWajXEWNxCGbYYCjFNBoAN+OnA6gKGCQAdkXAFDOiAdENMB7sDBHUAH2F8H5HkUrUa6093phszE0YyQbrX7arW7klafOf7+/fvRXSzHx8eP0e261g3aCd+n0L8GfZRP/j28gf9vtMz7EJwz6p/ofljD/K90XNPpLowdR6BmY77OShkQGvcd45d7FAXn3YT/AxjTgAueb/A+yvOU4FMenFsa9QhZ+5YntbNH+RTcw5v5H9NeUJs5HbOAp41+Sx9HR09pb/zurPc5dHGWygGZBw7u1bEGRFZ9X4MVfqyHxQ67B73xTV5PyG7GAPzvA4j2lPpr7RvH4BHnnKqvf6L6fQHfLK5W8RBALgm/tx8V2iuqg8+DttbCp9O+UM+Cj77O+RLftpTP1IJJX8WVezjhk2ZVyFYjn9Q8GW+Ib5TXOajqrRPU1fl787peDV7bTB3lLzbI80oXK3DFjqr+tT2G11PPXa2v0SnTN32DDq57KAYyr3q+CR3ou0k8XKZ+bDCzPtqhXnPEwCJeMjJCb6gaeCos7XMos9bKR22U4vuTNeToG/xN4GbFdWThy7SZwQOnbpEb4tuDGfhgh116gaqxe3SddRsYed7GLjEGnwHUjPE9vJ7AyXOoq8Ezk4c24ptY62YMOAe1WWPWQX+X9dDX369qPTOfgVniiv4m3j2YLF6vh1z9NoD9Hioc2V5t7qi4BpMcGL9YK5AX9OMqr8hHV3yc5Wuipt/lvjnnbUdnr7QT6AZhFB3YK6ZWcdX2xodozKXtG/+FIGOjvtkTA2I2qVqeTwyDM4ppnT7fKpt4KVAx1iX1gW0g5gX66RW1Vc5hOCC/Fdw696YDFnKO/1+Ktvq6suaTWAg8H6MfLfb1Fnkb3z/YvmSOPxYwhnyD/FAMoHesq+fHb+oAjxvH4gb1APpUyUl37SmuKvoq3n2lpgVhA0YwE/MlA9RiKnaNnO1Lqgq7m7yGUvBXCkFeLKf1CDLuzjCMeF4r7tqmjPIptIe3mWTygR5LJ0VyUk/PgEAHT1t/1WhuoGp8aN3yg+WVvXaYbPom5q1bcLsxgM4HxmRtfJVlfSxZ0hi8l/C6ST0xvX1cr340zUubdxgPxvox4KJcuDmDVWOW8V4fHgMp5bK0TT7Ct/laynlodY58XncNJjTndaxOpt2NJQekH/LTh8oQn3NShnkzf+RtRY+p7vU3+LN11OPRh0/bNuuoxoZ1BEObFJvTNxctOSr9Id/E3LaUzRhwDupSjipI0SljeuhJt6rj9MG1idcEzERhd4HAJbmux6PPeBgD0iwA3enxM1ME2lqgzsZqTLB04uwxVvPYH+Xb4gVnb6D6mCmPialeeb5kh97YEm1pPdAbe/G9FKhAL/tmOhbf4HVjALo+169ls9E3wA24Jmb4FsNAdd36z3FrLbuJdw+BbkFZj+YD9YIjW6BugU8eSy+51nDKPqX2chDIqZzm9ltulxrneIg+LnqtjPKJsYd3cU50clOa5209jhyfpS+LwP8MzHRkPtODtSvfQ2jUN93pl2Ig4/6M0Av0eEONQLzKQOobaZYPan9bNp/3YR0pU4mrEbyUozKRu8GFTQ34F2RzFWvKKWh7RcXCKL1xj3rzFccM3GkJWizQnedfoJ5MGfN34gdviE+ZPbwLcy6SwU4vXfTdClIxPGHSOqeAozrC50Y1HeniTHA3fSM/mLtigLn1d7NeMGLjhF4GsAFdCnIf4TNP9fYpcbWFdx8hne7Jp7K+/FVgb1GxtVMuFPdh1eOLEzV+dVg6gRMfOsaGGuVzPXt45R8q2MzAe4ROxWnQ0hqhxboTVra1Y6H/dI5RHcV4Bp5XbV0MNm8c6Z5gPl42fZP1+tEYUA/191bxwWVcuZlm8aRdGPfgC7/T7ZaCl3JUWMw3ShIOUE03n1h9TDDuzkCsnwcFHR5Pnl4S7k6sfwBucq9KXj3LHwboD/Epv4e3mm81RwXTwJjpAE25mc2gJTvRdvNY6DOsrHuz7tBv2iI/82PM2eHV5sUXPdlq7iYG4HVzOldZI303j3zlAU5fnubhFHpA9zZMY7SbeBGQBtD0paawExc6fXeJtBJUk4mLoTOvijaPMb498gut4qsX6KIbZ/Kt83vG2eTLBh/CjPVkmcVARRfx0uOJVqdH9TTrPvigh02LnSbz7dZxIq9vykaOMWnUMid9/dj4hu+hGKjs4trrQHWOEiuZz42Z3imhS6Y7V/0Lj3Zexav/U4qgkejSTY5wcXEdSzM9ELD7aGDMnEQjWDzW3yLfXHP5SjhnLB5Ozxb4dFr8zijWjd/gNVcJeEN8yKr7EC98BpvreJpbr0/XccX8v9OKpQM8UXvlGr5Zfp3nV87/vNHN+Ud1rCdFxk2irqGPPjNgk67ywjPim6EYqPDsWrRV+c08UfI/zKtO+lv/RZnxZv1ifIb3N45lS+HiqmIqAAAAAElFTkSuQmCC\n",
      "text/latex": [
       "$\\displaystyle 3.605551275463989$"
      ],
      "text/plain": [
       "3.605551275463989"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "u = np.array([1, 4])\n",
    "v = np.array([-2, 2])\n",
    "dist(u, v)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle 6.082762530298219$"
      ],
      "text/plain": [
       "6.082762530298219"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "u = np.array([1, 4])\n",
    "v = np.array([2, -2])\n",
    "dist(u, v)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now Let's test if vector $(2.5, 2.5)^T$ is perpendicular to $(2, -2)^T$ and $(-2, 2)^T$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "a = np.array([[2.5, 2.5], [-2, 2]])\n",
    "b = np.array([[2.5, 2.5], [2, -2]])\n",
    "distance1 = sp.spatial.distance.pdist(a, 'euclidean')\n",
    "distance2 = sp.spatial.distance.pdist(b, 'euclidean')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[4.52769257] [4.52769257]\n"
     ]
    }
   ],
   "source": [
    "print(distance1, distance2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "They are the same length, which means $\\mathbf{w}\\perp \\mathbf{v}$ and $\\mathbf{w}\\perp \\mathbf{-v}$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <font face=\"gotham\" color=\"purple\"> Orthogonal Complements</font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In general, the set of all vectors $\\mathbf{z}$ that are orthogonal to subspace $W$ is called <font face=\"gotham\" color=\"red\"> orthogonal complement</font>, or denoted as $W^\\perp$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The most common example would be \n",
    "\n",
    "$$(\\operatorname{Row} A)^{\\perp}=\\operatorname{Nul} A \\quad \\text { and } \\quad(\\operatorname{Col} A)^{\\perp}=\\operatorname{Nul} A^{T}$$\n",
    "\n",
    "The nullspace of $A$ is perpendicular to the row space of $A$; the nullspace of $A^T$ is perpendicular to the column space of $A$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# <font face=\"gotham\" color=\"purple\"> Angles in $\\mathbb{R}^n$</font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "There is one formula of calculating angles in vector space, to derive it we need the law of cosine:\n",
    "\n",
    "$$\\|\\mathbf{u}-\\mathbf{v}\\|^{2}=\\|\\mathbf{u}\\|^{2}+\\|\\mathbf{v}\\|^{2}-2\\|\\mathbf{u}\\|\\|\\mathbf{v}\\| \\cos \\vartheta$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Rearrange, we get\n",
    "\n",
    "$$\\begin{aligned}\n",
    "\\|\\mathbf{u}\\|\\|\\mathbf{v}\\| \\cos \\vartheta &=\\frac{1}{2}\\left[\\|\\mathbf{u}\\|^{2}+\\|\\mathbf{v}\\|^{2}-\\|\\mathbf{u}-\\mathbf{v}\\|^{2}\\right] \\\\\n",
    "&=\\frac{1}{2}\\left[u_{1}^{2}+u_{2}^{2}+v_{1}^{2}+v_{2}^{2}-\\left(u_{1}-v_{1}\\right)^{2}-\\left(u_{2}-v_{2}\\right)^{2}\\right] \\\\\n",
    "&=u_{1} v_{1}+u_{2} v_{2} \\\\\n",
    "&=\\mathbf{u} \\cdot \\mathbf{v}\n",
    "\\end{aligned}$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In statistics, $\\cos{\\vartheta}$ is called <font face=\"gotham\" color=\"red\"> correlation coefficient </font>.\n",
    "\n",
    "$$\n",
    "\\cos{\\vartheta}=\\frac{\\mathbf{u} \\cdot \\mathbf{v}}{\\|\\mathbf{u}\\|\\|\\mathbf{v}\\|}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <font face=\"gotham\" color=\"purple\"> Geometric Interpretation of Dot Product</font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You probably have notices that sometimes <i>dot product</i> and <i>inner product</i> are used interchangeably. Despite that, they do have different meanings. \n",
    "\n",
    "Functions and polynomials can have inner product as well, but we usually use dot product to refer to inner product among vector space.\n",
    "\n",
    "We will show that dot product has an interesting geometric interpretation."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Consider two vectors $\\mathbf{a}$ and $\\mathbf{u}$, pointing different direction, the angle form by them is $\\vartheta$, also $\\mathbf{u}$ is a unit vector. We would like to know how much $\\mathbf{a}$ is pointing to $\\mathbf{u}$'s direction.\n",
    "\n",
    "And this value can be calculated by projecting $\\mathbf{a}$ onto $\\mathbf{u}$,\n",
    "\n",
    "$$\n",
    " \\|\\mathbf{a}\\|\\cos{\\vartheta}=\\|\\mathbf{a}\\| \\|\\mathbf{u}\\|\\cos{\\vartheta} = \\mathbf{a} \\cdot\\mathbf{u} \n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Any vector $\\mathbf{b}$ can be normalized as a unit vector $\\mathbf{u}$, then perform the calculation above, we can tell how much $\\mathbf{b}$ is pointing the direction of $\\mathbf{u}$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# <font face=\"gotham\" color=\"purple\"> Orthogonal Sets</font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If a set of vectors $S = \\left\\{\\mathbf{u}_{1}, \\ldots, \\mathbf{u}_{p}\\right\\}$ in $\\mathbb{R}^{n}$ has any arbitrary pair to be orthogonal, i.e. $\\mathbf{u}_{i} \\cdot \\mathbf{u}_{j}=0$ whenever $i \\neq j$, $S =\\left\\{\\mathbf{u}_{1}, \\ldots, \\mathbf{u}_{p}\\right\\}$ is called an <font face=\"gotham\" color=\"red\">orthogonal set</font>. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Naturally, orthogonal set $S$ is linearly independent, they are also an <font face=\"gotham\" color=\"red\"> orthogonal basis</font> for space spanned by $\\left\\{\\mathbf{u}_{1}, \\ldots, \\mathbf{u}_{p}\\right\\}$. Orthogonal basis has an advantage is that coordinates of the basis can be quickly computed."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For instance any $\\mathbf{y}$ in $W$, \n",
    "\n",
    "$$\n",
    "\\mathbf{y}=c_{1} \\mathbf{u}_{1}+\\cdots+c_{p} \\mathbf{u}_{p}\n",
    "$$\n",
    "\n",
    "Because it is an orthogonal sets,\n",
    "\n",
    "$$\n",
    "\\mathbf{y} \\cdot \\mathbf{u}_{1}=\\left(c_{1} \\mathbf{u}_{1}+c_{2} \\mathbf{u}_{2}+\\cdots+c_{p} \\mathbf{u}_{p}\\right) \\cdot \\mathbf{u}_{1}=c_{1}\\left(\\mathbf{u}_{1} \\cdot \\mathbf{u}_{1}\\right)\n",
    "$$\n",
    "\n",
    "Thus\n",
    "\n",
    "$$c_{j}=\\frac{\\mathbf{y} \\cdot \\mathbf{u}_{j}}{\\mathbf{u}_{j} \\cdot \\mathbf{u}_{j}} \\quad(j=1, \\ldots, p)$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# <font face=\"gotham\" color=\"purple\"> Orthogonal Projection</font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For any $\\mathbf{y}$ in $\\mathbb{R}^n$, we want to decompose it as \n",
    "\n",
    "$$\n",
    "\\mathbf{y} = \\alpha \\mathbf{u}+\\mathbf{z} = \\hat{\\mathbf{y}}+\\mathbf{z}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "where $ \\mathbf{u}$ is perpendicular to $\\mathbf{z}$, $\\alpha$ is a scalar.And the subspace $L$ spanned by $\\mathbf{u}$, the projection of $\\mathbf{y}$ onto $L$ is denoted as\n",
    "\n",
    "$$\\hat{\\mathbf{y}}=\\operatorname{proj}_{L} \\mathbf{y}=\\frac{\\mathbf{y} \\cdot \\mathbf{u}}{\\mathbf{u} \\cdot \\mathbf{u}} \\mathbf{u}$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Becasue $\\mathbf{u}\\perp \\mathbf{z}$, then $\\mathbf{u}\\cdot \\mathbf{z} = 0$, replace $\\mathbf{z}$ by $\\mathbf{y}- \\alpha \\mathbf{u}$:\n",
    "\n",
    "$$\n",
    "(\\mathbf{y}- \\alpha \\mathbf{u})\\cdot \\mathbf{u}= 0\\\\\n",
    "\\alpha = \\frac{\\mathbf{y}\\cdot \\mathbf{u}}{\\mathbf{u}\\cdot \\mathbf{u}}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we get the formula for projection onto $L$ spanned by $\\mathbf{u}$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <font face=\"gotham\" color=\"purple\"> A Visual Example in $\\mathbb{R}^T$</font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Suppose we have $\\mathbf{y} = (2, 5)^T$, $\\mathbf{u} = (3, 1)^T$. Plot $\\hat{\\mathbf{y}}$ onto the subspace spanned $L$ by $\\mathbf{u}$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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NSr12gorKytLzz//vK699lo1btzYL8/58MMPq3fv3vrkk080cOBAvzxnYRB4gUCxZYt56863I8Nf/iJdf727dQGAPxw4YH6oX7nSTEnzVauWCbpNmkiW5Zcvt3z5cknSJZdc4pfnK6qxY8dqzZo1GjZsmMaPH5/38aSkJHXv3l2LFy9WtQB/5+7LL7/Url279Kc//clvz3n55ZerZs2amjBhQqkGXtbwAoEgLU264or8HpORkeb4ySfdrQsAiis1VfrsM+nf/zZ3dX3Dbp06ZorkkCFS06Z+C7uS+4F3yZIlkqShQ4ee8XyHDh1UqVKlvOOkpCRZlqXRo0dr9uzZSkxMVHR0tGrUqKHhw4fr0OnDNiRlZGRo3Lhx6tmzpy644AKFh4erTp06Gjx4sHbs2OF4rO/zp6SkqEePHoqNjVWVKlV0yy23KPX08cyS3nvvPYWHh6tv374Fzo0ePVqWZcmyLNWvX99x7t133807Z532dxoaGqrrr79e33//vbZt23bmi1cCCLyA23JypBtvlLZvN38ODZXi46WPPvLriz8AlKrdu6WPP5beeMOMArbt/HPx8dJtt0mDB0sXXVQir3VuB94qVapIkjZs2FCkz1u4cKGuueYa1alTRw888IAuuugivfnmm+rVq5cycjcyn3LgwAE99NBDkqTrr79eI0eO1MUXX6z//Oc/SkxM1IHTRy/LBPEePXqofPnyGjZsmBISEvThhx/quuuuk+3zd5STk6O5c+eqZcuWivLzUI+OHTvKtm3NnTvXr8/7e1jSALjtiSekuXNNk3XJzH+fNcssaQCAsmbnTvOatnZtwXMNG5qlC/HxJV7G8uXLFRoaqhYtWhTp80aPHl3ox1aqVEkjR44847n+/fvrgw8+0J133qmUlBT16dNHHTp0OOdzzpo1S++9954GDRqU97HBgwfrnXfe0fjx4/XAAw/kfbxy5cratm2batWq5XiOyZMn609/+pNef/11PfHEE45zX3/9tT755BP1799fkgm2vXr10nfffaeUlBR16tRJkrR69WodOnRIbdq0KdzFKILc51y4cKFuvfVWvz//mRB4ATd98on06qvOTWozZkh167pbFwAU1bZtJuie6Y5m48Ym6NapUyqlHD58WL/99puaNWtW5LuT//jHPwr92Pj4+LMG3htuuEHPPfecnn32Wb3yyit65ZVXZFmW4uPjdeutt+qBBx444xreJk2aFAiB//jHPzRp0iS9//77jsAbERFRIOxK0s0336zhw4drzpw5BQJv9+7d88KuJIWEhOi2227Td999p6VLl+YF3u3bt0uSatSoUcirUXi5z5n7NUoDgRdwy4oV0u23OzepvfaaGZcJAGWBbUubN5v+ub/9VvB806Ym6J4hlJWkFStWyLbt81rO4Pu2fnH97W9/0/DhwzV9+nQtXLhQixcv1vLly/Xss89q4sSJWrx4serVq+f4nM6dOxdY91qnTh3Fx8frp59+KvA1Fi9erBdffFGLFi1SamqqsrKy8s7t2rWrwOPPdE0uuOACSXKsE85dDuG7zthfKleuLEnanztcqRQQeAE37N0r9e6d32s3Olq6807zCwACnW1LGzeaoLt1q/OcZZlWil27mjZjLlixYoUk99bv+qpcubJuvfXWvLu2H330kd566y0lJSXp4Ycf1scff+x4fFxc3Bmfp3r16tq0aZPS09MVEREhSZo7d6569eqlsLAwXXnllWrYsKGio6NlWZbGjh2r9Nylcj4qVKhQ4GNhYSYOZvu0iYuMjJQknTx96t0ZnP5Dwpm+rq8Tp270+Htt8O8h8AKlLSNDuvJK6eBBcxweLl16qZkyBACBzLaldevM0oWdO53nQkKkli1N0K1a1Z36TinOhjV/reE9m5o1a+qdd95RgwYNlJycXOD8mbolSNLevXsVHh6eF3YlacyYMcrMzFRycrI6duyY93HbtvXSSy8Vqa7T5QbvM218k8xSiFy5ATZX7pCNszl46vvf2cJ9SThn4LUsK1JSsqSIU4//xLbtp0q6MMCTbNvsSl6zRsrKMndC4uKkr76Swvj5E0CAsm3pl1/MHd09e5znQkOl1q2lLl3MKOAAkBt4W7duXeTP9dca3t8TGxsrSTp27FiBcwsXLpRt245lDdu3b9fWrVsL/Pds2rRJVatWdYRdSVq5cqWO576DeJ6aN28uy7K0fv36M573Xeqwb98+bdmyRfHx8dq7d6/ee++9333udevWSVKRNxQWR2G+w6ZLuty27TTLsspJmm9Z1te2baeUcG2A94wda/pR5v40HBMjzZkjlcAaKQAotpwc6eefVfvzzwuG2bAwqU0bqXNn6Qxvk7slPT1dq1evVv369fPWihaFv9bwTpgwQe3btz9j6H7xxRclSV26dClwbvXq1Xr//fcdXRqeeuopZWVl6ZZbbnE8tm7dulq3bp3Wrl2rhIQESVJaWtp5hfDTVa5cWRdffHFeP+HT+XZvsG1biYmJ6ty5s+bNm6c9p/9QdJrc5+zatWux6yyscwZe2/zNp506LHfql/9WdAPBYtYs6fHHnR0ZPv5YOvUiBQABIzvb9M6dN086cEDhhw/nB95y5aR27aTEROnUncpA8vPPPyszM1Pp6em6++67z/iY22+/vcTD1owZMzR06FA1bdpUiYmJqlGjhg4ePKgZM2Zoy5Ytqly58hmXHfTq1Ut33323vvrqKzVq1EjJyclasGCB2rZtqz//+c+Oxw4bNkyzZ89W586dNXDgQNm2rZkzZyouLk61a9cu9n/Dddddp+eee06rV69W06ZNHecSExPVsWNHpaSY+587d+7Uxx9/LMuy1KtXL82aNeuszztnzhzFxcUVuDNdkgr1HqplWaGSlklqJOl127YXn+ExQyQNkcyajKSkJD+WGbzS0tK4ln7k2vVMT5d+/VV65hlzHBIi1a5tJqqV4b9f/n36D9fSv7ie58fKzlbs+vWquGqVwnzebs/IyNCmHTt0pEkTHWnWTDnh4dLSpS5WenbTp0+XZDoUvP3222d8TKtWrRwbtErCH/7wB9WoUUNLly7VtGnTdODAAYWGhiouLk79+/fXwIEDtX///rx/p7kb7WrXrq3nn39e77zzjr788ktFRkaqb9++GjJkiBYuXOj4GlWrVtXf/vY3ffTRR5o4caIqVKigLl266O6779bgwYOVnZ1d4Pk3b95c4P+Ns53LXdbwwgsv6K677irw3/jYY4/p9ddfV0pKijIyMnTRRRfpjjvuUGpqqiPw+j7nvn37NHfuXP3xj3/UggULzufSnherKLfuLcuqJOl/ku6zbfvnsz0uISHBXnumhtMostyZ2/APV67nkSNSixamR6Vtmzu7110nTZ5c5iep8e/Tf7iW/sX1LKLMTGnZMmnBgvwR57kiI7UiMlKthw41r18olrP920xKSlKPHj301FNPFWnjXEnr16+fli9fro0bN+Z1cyiO559/XqNHj9batWt14YUXFvv5LMtaZtt223M9rkijhW3bPiQpSdKV51kXEFyys6V+/cwmD9s2a94uukiaNKnMh10AHpCebkLu2LHSzJnOsBsdLfXsKT34oA61bk3YDVLP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\n",
      "text/plain": [
       "<Figure size 864x864 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize = (12, 12))\n",
    "\n",
    "vects = np.array([[4, 5], [2, 1]])\n",
    "colr = ['red', 'blue'] \n",
    "cordt = ['$(4, 5)$', '$(2, 1)$']\n",
    "vec_name = ['$\\mathbf{y}$', '$\\mathbf{u}$']\n",
    "\n",
    "for i in range(2):\n",
    "    ax.arrow(0, 0, vects[i][0], vects[i][1], color = colr[i], width = .03, \n",
    "             length_includes_head = True,\n",
    "             head_width = .1, # default: 3*width\n",
    "             head_length = .2,\n",
    "             overhang = .4)\n",
    "    ax.text(x = vects[i][0], y = vects[i][1], s = cordt[i], size = 15)\n",
    "    ax.text(x = vects[i][0]/2, y = vects[i][1]/2, s = vec_name[i], size = 22)\n",
    "\n",
    "################################### Subspace L ############################\n",
    "x = np.linspace(0, 8.1)\n",
    "y = 1/2*x\n",
    "ax.plot(x, y, lw = 3, color = 'red', alpha = .5)\n",
    "ax.text(x = 6.5, y = 3, s = '$L = \\operatorname{Span(\\mathbf{u})}$', size = 19)\n",
    "\n",
    "ax.axis([0, 8, 0, 8])\n",
    "ax.grid()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's use formula to compute $\\alpha$ and $\\hat{\\mathbf{y}}$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAABkAAAAOCAYAAADaOrdAAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABg0lEQVQ4EY2UgW3CMBBFk04QdYSwAWUERkDqBNANQB2BETpCRTcoK8AGTSegZYP0vTSmduogTvry+d+3v82ZlG3bFmVZ1kVRbIAxA19gQ+0ocWuwz3agfQ17aLDTLIC54hbMA3dtROceH7GefCfnOsNJNdwE7lsM+dwc3QG8xDXm70LOcDOzxIi55vJ1vHiYU1/0umR9rLtDsAcN5JkxF1WOjLhn8vOV9UWpYy5oor+xtyhz9cChcwMfyBI8ghOYAPvsBfg9ooaHHHpqCawDlxupe0t19mQVa5jbhoXcmIm3SBoZbxByNMEE6u91mrseaFTZkyS4vsU9wqekkJmgCX1sMmVv5yFmiQkGK8W3GKjrQ4NgFrh4rC8mGPgUJ7EBXC3iFZlcE088Fk3XE6o2eotB0iO4NRh9/+qJOSD9t7bribzP05P67/x9biR93DNOEfkc/b55Wht5hHuQC0HN9fLd96/XfsIt4d7U2SCPlMMB0eV2aEZfHTW/d55e+LXwgN3aH00dvwCRi57SAAAAAElFTkSuQmCC\n",
      "text/latex": [
       "$\\displaystyle 2.6$"
      ],
      "text/plain": [
       "2.6"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y = np.array([4, 5])\n",
    "u = np.array([2, 1])\n",
    "alpha = (y@u)/(u@u);alpha"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5.2, 2.6])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "yhat = alpha*u;yhat"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "With results above, we can plot the orthogonal projection."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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zx7pppt8R2R48knphhucrQtBb+jQoTrrmYFP5kG4F198US+++KLPcUlJSYWO6ADAIcePm6D71VdmOuD8mjQxQbdNm6AIuh4EXgDll5srXXutdzzF6GjpRz+SfvtbZ+tCSDjpebjxBzt37tTOnTsLHHf8+PHKKglAcY4cMUF3yxYzk2Z+zZqZCSNatQqqoOtB4AVQPrm50q5d0sGD5n14uPlF99ZbQfnLDpXn3LlzWrdunfr27aswppAGQt/Bg9KiRVK+UVnytGplWnSbNw/q3/0EXgDl8+STpo+WZ8iZ+Hjpiy9M/11USZmZmVqyZIlWrlyprKws1axZUx06dCjyePvyFiIAwWX/fhN0800yk+eqq0zQLeMMi04h8AIou1mzpL//XXr6abMeEyN9/rnpu4UqKysrSytWrFD2D09pp6WlKSkpSeEODEEEoAL27jVBd/fugvvatjVBt3HjSi+rIgi8AMpm3TrpF7/wfUjttdeknj2drQuOq1Gjhrp3767ly5dLMn10N27cqC5dujhcGYAS2bYJuIsWSd9+67vPssyoOwMGSA0aOFNfBRF4AZTekSPSkCHeudDDwqR77pHGjnW2LgSNfv36ae3atbp06ZIkKT09XR06dFAEk48Awcm2TZeFRYuk777z3RcWJrVvbyaMqFfPmfr8hN9AAErn4kXp+uul06fNelSUmVzir391ti4ElerVq6tHjx5asmSJJOn777/X+vXr1b17d4crA+DDtqWtW03QPXzYd19YmJn6t18/10weROAFUDLblu6807QCZGebr7fq15euvNKRKSIR3Pr27avVq1fr4g8PNC5atEidOnVStWrVHK4MgHJzzbBiixZJx4757ouIkDp3NkG3Zk1n6gsQAi+Akv31r9Lcub7TBi9YIB044GxdCEoxMTHq3bu30tLSJElnz57V2rVr1atXL2cLA6qynBwzUcTixdKJE777qlWTunWT+vSRatRwpr4AI/ACKN68edIf/uA7bfCcOWZIGgIvitCrVy+tXLlSF374uVm8eLG6dOmiyMhIhysDqpjsbGnDBmnJEm+XNI/ISKlHD6l3b9OQ4WIEXgBF++YbaeRI3xEZnn7a9OUFihEdHa0+ffpowYIFksxkFKtWrVK/fv0crgyoIrKyzKg6S5dKZ8747ouONiPr9OpVZcZOJ/ACKNzp02ba4HPnzHpM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\n",
      "text/plain": [
       "<Figure size 864x864 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize = (12, 12))\n",
    "\n",
    "vects = np.array([[4, 5], [2, 1], [5.2, 2.6]])\n",
    "colr = ['red', 'blue', 'green'] \n",
    "cordt = ['$(4, 5)$', '$(2, 1)$', '(5.2, 2.6)']\n",
    "vec_name = ['$\\mathbf{y}$', '$\\mathbf{u}$', r'$\\hat{\\mathbf{y}} = \\alpha\\mathbf{u}$']\n",
    "\n",
    "for i in range(3):\n",
    "    ax.arrow(0, 0, vects[i][0], vects[i][1], color = colr[i], width = .03, \n",
    "             length_includes_head = True,\n",
    "             head_width = .1, # default: 3*width\n",
    "             head_length = .2,\n",
    "             overhang = .4, zorder = -i)\n",
    "    ax.text(x = vects[i][0], y = vects[i][1], s = cordt[i], size = 19)\n",
    "    ax.text(x = vects[i][0]/2, y = vects[i][1]/2, s = vec_name[i], size = 22)\n",
    "\n",
    "##################################### Components of y orthogonal to u ##########################\n",
    "\n",
    "point1 = [4, 5]\n",
    "point2 = [5.2, 2.6]\n",
    "line1 = np.array([point1, point2])\n",
    "ax.plot(line1[:,0], line1[:,1], c = 'k', lw = 3.5,alpha =0.5, ls = '--')\n",
    "ax.text(4.7, 3.8, '$\\mathbf{z}$', size = 22)\n",
    "################################### Subspace L ############################\n",
    "x = np.linspace(0, 8.1)\n",
    "y = 1/2*x\n",
    "ax.plot(x, y, lw = 3, color = 'red', alpha = .5, zorder = -3)\n",
    "ax.text(x = 6.5, y = 3, s = '$L = \\operatorname{Span(\\mathbf{u})}$', size = 19)\n",
    "\n",
    "ax.axis([0, 8, 0, 8])\n",
    "ax.grid()\n",
    "\n",
    "#################################### Formula ################################\n",
    "ax.text(x = 1, y = 7, \n",
    "        s = r'$(\\mathbf{y}- \\alpha \\mathbf{u})\\cdot \\mathbf{u}= 0$',\n",
    "        size = 22, color = 'b')\n",
    "ax.text(x = 1, y = 6.5, \n",
    "        s = r'$\\alpha = \\frac{\\mathbf{y}\\cdot \\mathbf{u}}{\\mathbf{u}\\cdot \\mathbf{u}}$',\n",
    "        size = 22, color = 'b')\n",
    "ax.text(x = 1, y = 6, \n",
    "        s = r'$\\operatorname{proj}_{L}\\mathbf{y}=\\frac{\\mathbf{y}\\cdot\\mathbf{u}}{\\mathbf{u}\\cdot\\mathbf{u}}\\mathbf{u}$',\n",
    "        size = 22, color = 'b')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <font face=\"gotham\" color=\"purple\"> The Orthogonal Decomposition Theorem</font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To generalize the orthogonal projection in the higher dimension $\\mathbb{R}^n$, we summarize the idea into the <font face=\"gotham\" color=\"red\"> orthogonal decomposition theorem</font>.\n",
    "\n",
    "Let $W$ be a subspace of $\\mathbb{R}^{n}$. Then each $\\mathbf{y}$ in $\\mathbb{R}^{n}$ can be written uniquely in the form\n",
    "$$\n",
    "\\mathbf{y}=\\hat{\\mathbf{y}}+\\mathbf{z}\n",
    "$$\n",
    "where $\\hat{\\mathbf{y}}$ is in $W$ and $\\mathbf{z}$ is in $W^{\\perp} .$ In fact, if $\\left\\{\\mathbf{u}_{1}, \\ldots, \\mathbf{u}_{p}\\right\\}$ is any orthogonal basis of $W,$ then\n",
    "$$\n",
    "\\hat{\\mathbf{y}}=\\frac{\\mathbf{y} \\cdot \\mathbf{u}_{1}}{\\mathbf{u}_{1} \\cdot \\mathbf{u}_{1}} \\mathbf{u}_{1}+\\cdots+\\frac{\\mathbf{y} \\cdot \\mathbf{u}_{p}}{\\mathbf{u}_{p} \\cdot \\mathbf{u}_{p}} \\mathbf{u}_{p}\n",
    "$$\n",
    "and $\\mathbf{z}=\\mathbf{y}-\\hat{\\mathbf{y}}$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In $\\mathbb{R}^{2}$, we project $\\mathbf{y}$ onto subspace $L$ which is spanned by $\\mathbf{u}$, here we generalize the formula for $\\mathbb{R}^{n}$, that $\\mathbf{y}$ is projected onto $W$ which is spanned by $\\left\\{\\mathbf{u}_{1}, \\ldots, \\mathbf{u}_{p}\\right\\}$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <font face=\"gotham\" color=\"purple\"> A Visual Example in $\\mathbb{R}^{3}$</font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A subspace $W=\\operatorname{Span}\\left\\{\\mathbf{u}_{1}, \\mathbf{u}_{2}\\right\\}$, and a vector $\\mathbf{y}$ is not in $W$, decompose $\\mathbf{y}$ into $\\hat{\\mathbf{y}} + \\mathbf{z}$, and plot them.\n",
    "\n",
    "where \n",
    "\n",
    "$$\\mathbf{u}_{1}=\\left[\\begin{array}{r}\n",
    "2 \\\\\n",
    "5 \\\\\n",
    "-1\n",
    "\\end{array}\\right], \\mathbf{u}_{2}=\\left[\\begin{array}{r}\n",
    "-2 \\\\\n",
    "1 \\\\\n",
    "1\n",
    "\\end{array}\\right], \\text { and } \\mathbf{y}=\\left[\\begin{array}{l}\n",
    "1 \\\\\n",
    "2 \\\\\n",
    "3\n",
    "\\end{array}\\right]$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The projection onto $W$ in $\\mathbb{R}^3$ is \n",
    "\n",
    "$$\n",
    "\\hat{\\mathbf{y}}=\\frac{\\mathbf{y} \\cdot \\mathbf{u}_{1}}{\\mathbf{u}_{1} \\cdot \\mathbf{u}_{1}} \\mathbf{u}_{1}+\\frac{\\mathbf{y} \\cdot \\mathbf{u}_{2}}{\\mathbf{u}_{2} \\cdot \\mathbf{u}_{2}} \\mathbf{u}_{2}=\\hat{\\mathbf{y}}_{1}+\\hat{\\mathbf{y}}_{2}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The codes for plotting are quite redundent, however exceedingly intuitive."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "window.mpl = {};\n",
       "\n",
       "\n",
       "mpl.get_websocket_type = function() {\n",
       "    if (typeof(WebSocket) !== 'undefined') {\n",
       "        return WebSocket;\n",
       "    } else if (typeof(MozWebSocket) !== 'undefined') {\n",
       "        return MozWebSocket;\n",
       "    } else {\n",
       "        alert('Your browser does not have WebSocket support. ' +\n",
       "              'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
       "              'Firefox 4 and 5 are also supported but you ' +\n",
       "              'have to enable WebSockets in about:config.');\n",
       "    };\n",
       "}\n",
       "\n",
       "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
       "    this.id = figure_id;\n",
       "\n",
       "    this.ws = websocket;\n",
       "\n",
       "    this.supports_binary = (this.ws.binaryType != undefined);\n",
       "\n",
       "    if (!this.supports_binary) {\n",
       "        var warnings = document.getElementById(\"mpl-warnings\");\n",
       "        if (warnings) {\n",
       "            warnings.style.display = 'block';\n",
       "            warnings.textContent = (\n",
       "                \"This browser does not support binary websocket messages. \" +\n",
       "                    \"Performance may be slow.\");\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.imageObj = new Image();\n",
       "\n",
       "    this.context = undefined;\n",
       "    this.message = undefined;\n",
       "    this.canvas = undefined;\n",
       "    this.rubberband_canvas = undefined;\n",
       "    this.rubberband_context = undefined;\n",
       "    this.format_dropdown = undefined;\n",
       "\n",
       "    this.image_mode = 'full';\n",
       "\n",
       "    this.root = $('<div/>');\n",
       "    this._root_extra_style(this.root)\n",
       "    this.root.attr('style', 'display: inline-block');\n",
       "\n",
       "    $(parent_element).append(this.root);\n",
       "\n",
       "    this._init_header(this);\n",
       "    this._init_canvas(this);\n",
       "    this._init_toolbar(this);\n",
       "\n",
       "    var fig = this;\n",
       "\n",
       "    this.waiting = false;\n",
       "\n",
       "    this.ws.onopen =  function () {\n",
       "            fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
       "            fig.send_message(\"send_image_mode\", {});\n",
       "            if (mpl.ratio != 1) {\n",
       "                fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
       "            }\n",
       "            fig.send_message(\"refresh\", {});\n",
       "        }\n",
       "\n",
       "    this.imageObj.onload = function() {\n",
       "            if (fig.image_mode == 'full') {\n",
       "                // Full images could contain transparency (where diff images\n",
       "                // almost always do), so we need to clear the canvas so that\n",
       "                // there is no ghosting.\n",
       "                fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
       "            }\n",
       "            fig.context.drawImage(fig.imageObj, 0, 0);\n",
       "        };\n",
       "\n",
       "    this.imageObj.onunload = function() {\n",
       "        fig.ws.close();\n",
       "    }\n",
       "\n",
       "    this.ws.onmessage = this._make_on_message_function(this);\n",
       "\n",
       "    this.ondownload = ondownload;\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._init_header = function() {\n",
       "    var titlebar = $(\n",
       "        '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
       "        'ui-helper-clearfix\"/>');\n",
       "    var titletext = $(\n",
       "        '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
       "        'text-align: center; padding: 3px;\"/>');\n",
       "    titlebar.append(titletext)\n",
       "    this.root.append(titlebar);\n",
       "    this.header = titletext[0];\n",
       "}\n",
       "\n",
       "\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
       "\n",
       "}\n",
       "\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
       "\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._init_canvas = function() {\n",
       "    var fig = this;\n",
       "\n",
       "    var canvas_div = $('<div/>');\n",
       "\n",
       "    canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
       "\n",
       "    function canvas_keyboard_event(event) {\n",
       "        return fig.key_event(event, event['data']);\n",
       "    }\n",
       "\n",
       "    canvas_div.keydown('key_press', canvas_keyboard_event);\n",
       "    canvas_div.keyup('key_release', canvas_keyboard_event);\n",
       "    this.canvas_div = canvas_div\n",
       "    this._canvas_extra_style(canvas_div)\n",
       "    this.root.append(canvas_div);\n",
       "\n",
       "    var canvas = $('<canvas/>');\n",
       "    canvas.addClass('mpl-canvas');\n",
       "    canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
       "\n",
       "    this.canvas = canvas[0];\n",
       "    this.context = canvas[0].getContext(\"2d\");\n",
       "\n",
       "    var backingStore = this.context.backingStorePixelRatio ||\n",
       "\tthis.context.webkitBackingStorePixelRatio ||\n",
       "\tthis.context.mozBackingStorePixelRatio ||\n",
       "\tthis.context.msBackingStorePixelRatio ||\n",
       "\tthis.context.oBackingStorePixelRatio ||\n",
       "\tthis.context.backingStorePixelRatio || 1;\n",
       "\n",
       "    mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
       "\n",
       "    var rubberband = $('<canvas/>');\n",
       "    rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
       "\n",
       "    var pass_mouse_events = true;\n",
       "\n",
       "    canvas_div.resizable({\n",
       "        start: function(event, ui) {\n",
       "            pass_mouse_events = false;\n",
       "        },\n",
       "        resize: function(event, ui) {\n",
       "            fig.request_resize(ui.size.width, ui.size.height);\n",
       "        },\n",
       "        stop: function(event, ui) {\n",
       "            pass_mouse_events = true;\n",
       "            fig.request_resize(ui.size.width, ui.size.height);\n",
       "        },\n",
       "    });\n",
       "\n",
       "    function mouse_event_fn(event) {\n",
       "        if (pass_mouse_events)\n",
       "            return fig.mouse_event(event, event['data']);\n",
       "    }\n",
       "\n",
       "    rubberband.mousedown('button_press', mouse_event_fn);\n",
       "    rubberband.mouseup('button_release', mouse_event_fn);\n",
       "    // Throttle sequential mouse events to 1 every 20ms.\n",
       "    rubberband.mousemove('motion_notify', mouse_event_fn);\n",
       "\n",
       "    rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
       "    rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
       "\n",
       "    canvas_div.on(\"wheel\", function (event) {\n",
       "        event = event.originalEvent;\n",
       "        event['data'] = 'scroll'\n",
       "        if (event.deltaY < 0) {\n",
       "            event.step = 1;\n",
       "        } else {\n",
       "            event.step = -1;\n",
       "        }\n",
       "        mouse_event_fn(event);\n",
       "    });\n",
       "\n",
       "    canvas_div.append(canvas);\n",
       "    canvas_div.append(rubberband);\n",
       "\n",
       "    this.rubberband = rubberband;\n",
       "    this.rubberband_canvas = rubberband[0];\n",
       "    this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
       "    this.rubberband_context.strokeStyle = \"#000000\";\n",
       "\n",
       "    this._resize_canvas = function(width, height) {\n",
       "        // Keep the size of the canvas, canvas container, and rubber band\n",
       "        // canvas in synch.\n",
       "        canvas_div.css('width', width)\n",
       "        canvas_div.css('height', height)\n",
       "\n",
       "        canvas.attr('width', width * mpl.ratio);\n",
       "        canvas.attr('height', height * mpl.ratio);\n",
       "        canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
       "\n",
       "        rubberband.attr('width', width);\n",
       "        rubberband.attr('height', height);\n",
       "    }\n",
       "\n",
       "    // Set the figure to an initial 600x600px, this will subsequently be updated\n",
       "    // upon first draw.\n",
       "    this._resize_canvas(600, 600);\n",
       "\n",
       "    // Disable right mouse context menu.\n",
       "    $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
       "        return false;\n",
       "    });\n",
       "\n",
       "    function set_focus () {\n",
       "        canvas.focus();\n",
       "        canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    window.setTimeout(set_focus, 100);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function() {\n",
       "    var fig = this;\n",
       "\n",
       "    var nav_element = $('<div/>');\n",
       "    nav_element.attr('style', 'width: 100%');\n",
       "    this.root.append(nav_element);\n",
       "\n",
       "    // Define a callback function for later on.\n",
       "    function toolbar_event(event) {\n",
       "        return fig.toolbar_button_onclick(event['data']);\n",
       "    }\n",
       "    function toolbar_mouse_event(event) {\n",
       "        return fig.toolbar_button_onmouseover(event['data']);\n",
       "    }\n",
       "\n",
       "    for(var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            // put a spacer in here.\n",
       "            continue;\n",
       "        }\n",
       "        var button = $('<button/>');\n",
       "        button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
       "                        'ui-button-icon-only');\n",
       "        button.attr('role', 'button');\n",
       "        button.attr('aria-disabled', 'false');\n",
       "        button.click(method_name, toolbar_event);\n",
       "        button.mouseover(tooltip, toolbar_mouse_event);\n",
       "\n",
       "        var icon_img = $('<span/>');\n",
       "        icon_img.addClass('ui-button-icon-primary ui-icon');\n",
       "        icon_img.addClass(image);\n",
       "        icon_img.addClass('ui-corner-all');\n",
       "\n",
       "        var tooltip_span = $('<span/>');\n",
       "        tooltip_span.addClass('ui-button-text');\n",
       "        tooltip_span.html(tooltip);\n",
       "\n",
       "        button.append(icon_img);\n",
       "        button.append(tooltip_span);\n",
       "\n",
       "        nav_element.append(button);\n",
       "    }\n",
       "\n",
       "    var fmt_picker_span = $('<span/>');\n",
       "\n",
       "    var fmt_picker = $('<select/>');\n",
       "    fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
       "    fmt_picker_span.append(fmt_picker);\n",
       "    nav_element.append(fmt_picker_span);\n",
       "    this.format_dropdown = fmt_picker[0];\n",
       "\n",
       "    for (var ind in mpl.extensions) {\n",
       "        var fmt = mpl.extensions[ind];\n",
       "        var option = $(\n",
       "            '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
       "        fmt_picker.append(option);\n",
       "    }\n",
       "\n",
       "    // Add hover states to the ui-buttons\n",
       "    $( \".ui-button\" ).hover(\n",
       "        function() { $(this).addClass(\"ui-state-hover\");},\n",
       "        function() { $(this).removeClass(\"ui-state-hover\");}\n",
       "    );\n",
       "\n",
       "    var status_bar = $('<span class=\"mpl-message\"/>');\n",
       "    nav_element.append(status_bar);\n",
       "    this.message = status_bar[0];\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
       "    // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
       "    // which will in turn request a refresh of the image.\n",
       "    this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.send_message = function(type, properties) {\n",
       "    properties['type'] = type;\n",
       "    properties['figure_id'] = this.id;\n",
       "    this.ws.send(JSON.stringify(properties));\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.send_draw_message = function() {\n",
       "    if (!this.waiting) {\n",
       "        this.waiting = true;\n",
       "        this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
       "    }\n",
       "}\n",
       "\n",
       "\n",
       "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
       "    var format_dropdown = fig.format_dropdown;\n",
       "    var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
       "    fig.ondownload(fig, format);\n",
       "}\n",
       "\n",
       "\n",
       "mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
       "    var size = msg['size'];\n",
       "    if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
       "        fig._resize_canvas(size[0], size[1]);\n",
       "        fig.send_message(\"refresh\", {});\n",
       "    };\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
       "    var x0 = msg['x0'] / mpl.ratio;\n",
       "    var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
       "    var x1 = msg['x1'] / mpl.ratio;\n",
       "    var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
       "    x0 = Math.floor(x0) + 0.5;\n",
       "    y0 = Math.floor(y0) + 0.5;\n",
       "    x1 = Math.floor(x1) + 0.5;\n",
       "    y1 = Math.floor(y1) + 0.5;\n",
       "    var min_x = Math.min(x0, x1);\n",
       "    var min_y = Math.min(y0, y1);\n",
       "    var width = Math.abs(x1 - x0);\n",
       "    var height = Math.abs(y1 - y0);\n",
       "\n",
       "    fig.rubberband_context.clearRect(\n",
       "        0, 0, fig.canvas.width / mpl.ratio, fig.canvas.height / mpl.ratio);\n",
       "\n",
       "    fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
       "    // Updates the figure title.\n",
       "    fig.header.textContent = msg['label'];\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
       "    var cursor = msg['cursor'];\n",
       "    switch(cursor)\n",
       "    {\n",
       "    case 0:\n",
       "        cursor = 'pointer';\n",
       "        break;\n",
       "    case 1:\n",
       "        cursor = 'default';\n",
       "        break;\n",
       "    case 2:\n",
       "        cursor = 'crosshair';\n",
       "        break;\n",
       "    case 3:\n",
       "        cursor = 'move';\n",
       "        break;\n",
       "    }\n",
       "    fig.rubberband_canvas.style.cursor = cursor;\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_message = function(fig, msg) {\n",
       "    fig.message.textContent = msg['message'];\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
       "    // Request the server to send over a new figure.\n",
       "    fig.send_draw_message();\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
       "    fig.image_mode = msg['mode'];\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function() {\n",
       "    // Called whenever the canvas gets updated.\n",
       "    this.send_message(\"ack\", {});\n",
       "}\n",
       "\n",
       "// A function to construct a web socket function for onmessage handling.\n",
       "// Called in the figure constructor.\n",
       "mpl.figure.prototype._make_on_message_function = function(fig) {\n",
       "    return function socket_on_message(evt) {\n",
       "        if (evt.data instanceof Blob) {\n",
       "            /* FIXME: We get \"Resource interpreted as Image but\n",
       "             * transferred with MIME type text/plain:\" errors on\n",
       "             * Chrome.  But how to set the MIME type?  It doesn't seem\n",
       "             * to be part of the websocket stream */\n",
       "            evt.data.type = \"image/png\";\n",
       "\n",
       "            /* Free the memory for the previous frames */\n",
       "            if (fig.imageObj.src) {\n",
       "                (window.URL || window.webkitURL).revokeObjectURL(\n",
       "                    fig.imageObj.src);\n",
       "            }\n",
       "\n",
       "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
       "                evt.data);\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "        else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
       "            fig.imageObj.src = evt.data;\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        var msg = JSON.parse(evt.data);\n",
       "        var msg_type = msg['type'];\n",
       "\n",
       "        // Call the  \"handle_{type}\" callback, which takes\n",
       "        // the figure and JSON message as its only arguments.\n",
       "        try {\n",
       "            var callback = fig[\"handle_\" + msg_type];\n",
       "        } catch (e) {\n",
       "            console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        if (callback) {\n",
       "            try {\n",
       "                // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
       "                callback(fig, msg);\n",
       "            } catch (e) {\n",
       "                console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
       "            }\n",
       "        }\n",
       "    };\n",
       "}\n",
       "\n",
       "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
       "mpl.findpos = function(e) {\n",
       "    //this section is from http://www.quirksmode.org/js/events_properties.html\n",
       "    var targ;\n",
       "    if (!e)\n",
       "        e = window.event;\n",
       "    if (e.target)\n",
       "        targ = e.target;\n",
       "    else if (e.srcElement)\n",
       "        targ = e.srcElement;\n",
       "    if (targ.nodeType == 3) // defeat Safari bug\n",
       "        targ = targ.parentNode;\n",
       "\n",
       "    // jQuery normalizes the pageX and pageY\n",
       "    // pageX,Y are the mouse positions relative to the document\n",
       "    // offset() returns the position of the element relative to the document\n",
       "    var x = e.pageX - $(targ).offset().left;\n",
       "    var y = e.pageY - $(targ).offset().top;\n",
       "\n",
       "    return {\"x\": x, \"y\": y};\n",
       "};\n",
       "\n",
       "/*\n",
       " * return a copy of an object with only non-object keys\n",
       " * we need this to avoid circular references\n",
       " * http://stackoverflow.com/a/24161582/3208463\n",
       " */\n",
       "function simpleKeys (original) {\n",
       "  return Object.keys(original).reduce(function (obj, key) {\n",
       "    if (typeof original[key] !== 'object')\n",
       "        obj[key] = original[key]\n",
       "    return obj;\n",
       "  }, {});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.mouse_event = function(event, name) {\n",
       "    var canvas_pos = mpl.findpos(event)\n",
       "\n",
       "    if (name === 'button_press')\n",
       "    {\n",
       "        this.canvas.focus();\n",
       "        this.canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    var x = canvas_pos.x * mpl.ratio;\n",
       "    var y = canvas_pos.y * mpl.ratio;\n",
       "\n",
       "    this.send_message(name, {x: x, y: y, button: event.button,\n",
       "                             step: event.step,\n",
       "                             guiEvent: simpleKeys(event)});\n",
       "\n",
       "    /* This prevents the web browser from automatically changing to\n",
       "     * the text insertion cursor when the button is pressed.  We want\n",
       "     * to control all of the cursor setting manually through the\n",
       "     * 'cursor' event from matplotlib */\n",
       "    event.preventDefault();\n",
       "    return false;\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
       "    // Handle any extra behaviour associated with a key event\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.key_event = function(event, name) {\n",
       "\n",
       "    // Prevent repeat events\n",
       "    if (name == 'key_press')\n",
       "    {\n",
       "        if (event.which === this._key)\n",
       "            return;\n",
       "        else\n",
       "            this._key = event.which;\n",
       "    }\n",
       "    if (name == 'key_release')\n",
       "        this._key = null;\n",
       "\n",
       "    var value = '';\n",
       "    if (event.ctrlKey && event.which != 17)\n",
       "        value += \"ctrl+\";\n",
       "    if (event.altKey && event.which != 18)\n",
       "        value += \"alt+\";\n",
       "    if (event.shiftKey && event.which != 16)\n",
       "        value += \"shift+\";\n",
       "\n",
       "    value += 'k';\n",
       "    value += event.which.toString();\n",
       "\n",
       "    this._key_event_extra(event, name);\n",
       "\n",
       "    this.send_message(name, {key: value,\n",
       "                             guiEvent: simpleKeys(event)});\n",
       "    return false;\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
       "    if (name == 'download') {\n",
       "        this.handle_save(this, null);\n",
       "    } else {\n",
       "        this.send_message(\"toolbar_button\", {name: name});\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
       "    this.message.textContent = tooltip;\n",
       "};\n",
       "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
       "\n",
       "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
       "\n",
       "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
       "    // Create a \"websocket\"-like object which calls the given IPython comm\n",
       "    // object with the appropriate methods. Currently this is a non binary\n",
       "    // socket, so there is still some room for performance tuning.\n",
       "    var ws = {};\n",
       "\n",
       "    ws.close = function() {\n",
       "        comm.close()\n",
       "    };\n",
       "    ws.send = function(m) {\n",
       "        //console.log('sending', m);\n",
       "        comm.send(m);\n",
       "    };\n",
       "    // Register the callback with on_msg.\n",
       "    comm.on_msg(function(msg) {\n",
       "        //console.log('receiving', msg['content']['data'], msg);\n",
       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
       "        ws.onmessage(msg['content']['data'])\n",
       "    });\n",
       "    return ws;\n",
       "}\n",
       "\n",
       "mpl.mpl_figure_comm = function(comm, msg) {\n",
       "    // This is the function which gets called when the mpl process\n",
       "    // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
       "\n",
       "    var id = msg.content.data.id;\n",
       "    // Get hold of the div created by the display call when the Comm\n",
       "    // socket was opened in Python.\n",
       "    var element = $(\"#\" + id);\n",
       "    var ws_proxy = comm_websocket_adapter(comm)\n",
       "\n",
       "    function ondownload(figure, format) {\n",
       "        window.open(figure.imageObj.src);\n",
       "    }\n",
       "\n",
       "    var fig = new mpl.figure(id, ws_proxy,\n",
       "                           ondownload,\n",
       "                           element.get(0));\n",
       "\n",
       "    // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
       "    // web socket which is closed, not our websocket->open comm proxy.\n",
       "    ws_proxy.onopen();\n",
       "\n",
       "    fig.parent_element = element.get(0);\n",
       "    fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
       "    if (!fig.cell_info) {\n",
       "        console.error(\"Failed to find cell for figure\", id, fig);\n",
       "        return;\n",
       "    }\n",
       "\n",
       "    var output_index = fig.cell_info[2]\n",
       "    var cell = fig.cell_info[0];\n",
       "\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_close = function(fig, msg) {\n",
       "    var width = fig.canvas.width/mpl.ratio\n",
       "    fig.root.unbind('remove')\n",
       "\n",
       "    // Update the output cell to use the data from the current canvas.\n",
       "    fig.push_to_output();\n",
       "    var dataURL = fig.canvas.toDataURL();\n",
       "    // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
       "    // the notebook keyboard shortcuts fail.\n",
       "    IPython.keyboard_manager.enable()\n",
       "    $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
       "    fig.close_ws(fig, msg);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.close_ws = function(fig, msg){\n",
       "    fig.send_message('closing', msg);\n",
       "    // fig.ws.close()\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
       "    // Turn the data on the canvas into data in the output cell.\n",
       "    var width = this.canvas.width/mpl.ratio\n",
       "    var dataURL = this.canvas.toDataURL();\n",
       "    this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function() {\n",
       "    // Tell IPython that the notebook contents must change.\n",
       "    IPython.notebook.set_dirty(true);\n",
       "    this.send_message(\"ack\", {});\n",
       "    var fig = this;\n",
       "    // Wait a second, then push the new image to the DOM so\n",
       "    // that it is saved nicely (might be nice to debounce this).\n",
       "    setTimeout(function () { fig.push_to_output() }, 1000);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function() {\n",
       "    var fig = this;\n",
       "\n",
       "    var nav_element = $('<div/>');\n",
       "    nav_element.attr('style', 'width: 100%');\n",
       "    this.root.append(nav_element);\n",
       "\n",
       "    // Define a callback function for later on.\n",
       "    function toolbar_event(event) {\n",
       "        return fig.toolbar_button_onclick(event['data']);\n",
       "    }\n",
       "    function toolbar_mouse_event(event) {\n",
       "        return fig.toolbar_button_onmouseover(event['data']);\n",
       "    }\n",
       "\n",
       "    for(var toolbar_ind in mpl.toolbar_items){\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) { continue; };\n",
       "\n",
       "        var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
       "        button.click(method_name, toolbar_event);\n",
       "        button.mouseover(tooltip, toolbar_mouse_event);\n",
       "        nav_element.append(button);\n",
       "    }\n",
       "\n",
       "    // Add the status bar.\n",
       "    var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
       "    nav_element.append(status_bar);\n",
       "    this.message = status_bar[0];\n",
       "\n",
       "    // Add the close button to the window.\n",
       "    var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
       "    var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
       "    button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
       "    button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
       "    buttongrp.append(button);\n",
       "    var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
       "    titlebar.prepend(buttongrp);\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function(el){\n",
       "    var fig = this\n",
       "    el.on(\"remove\", function(){\n",
       "\tfig.close_ws(fig, {});\n",
       "    });\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function(el){\n",
       "    // this is important to make the div 'focusable\n",
       "    el.attr('tabindex', 0)\n",
       "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
       "    // off when our div gets focus\n",
       "\n",
       "    // location in version 3\n",
       "    if (IPython.notebook.keyboard_manager) {\n",
       "        IPython.notebook.keyboard_manager.register_events(el);\n",
       "    }\n",
       "    else {\n",
       "        // location in version 2\n",
       "        IPython.keyboard_manager.register_events(el);\n",
       "    }\n",
       "\n",
       "}\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
       "    var manager = IPython.notebook.keyboard_manager;\n",
       "    if (!manager)\n",
       "        manager = IPython.keyboard_manager;\n",
       "\n",
       "    // Check for shift+enter\n",
       "    if (event.shiftKey && event.which == 13) {\n",
       "        this.canvas_div.blur();\n",
       "        // select the cell after this one\n",
       "        var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
       "        IPython.notebook.select(index + 1);\n",
       "    }\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
       "    fig.ondownload(fig, null);\n",
       "}\n",
       "\n",
       "\n",
       "mpl.find_output_cell = function(html_output) {\n",
       "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
       "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
       "    // IPython event is triggered only after the cells have been serialised, which for\n",
       "    // our purposes (turning an active figure into a static one), is too late.\n",
       "    var cells = IPython.notebook.get_cells();\n",
       "    var ncells = cells.length;\n",
       "    for (var i=0; i<ncells; i++) {\n",
       "        var cell = cells[i];\n",
       "        if (cell.cell_type === 'code'){\n",
       "            for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
       "                var data = cell.output_area.outputs[j];\n",
       "                if (data.data) {\n",
       "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
       "                    data = data.data;\n",
       "                }\n",
       "                if (data['text/html'] == html_output) {\n",
       "                    return [cell, data, j];\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "}\n",
       "\n",
       "// Register the function which deals with the matplotlib target/channel.\n",
       "// The kernel may be null if the page has been refreshed.\n",
       "if (IPython.notebook.kernel != null) {\n",
       "    IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
       "}\n"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"\" width=\"682\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib notebook\n",
    "\n",
    "######################## Subspace W ##############################\n",
    "s = np.linspace(-.5, .5, 10)\n",
    "t = np.linspace(-.5, .5, 10)\n",
    "S, T = np.meshgrid(s, t)\n",
    "\n",
    "X1 = 2 * S - 2 * T\n",
    "X2 = 5 * S + T\n",
    "X3 = -S + T\n",
    "\n",
    "fig = plt.figure(figsize = (7, 7))\n",
    "ax = fig.add_subplot(projection='3d')\n",
    "ax.plot_wireframe(X1, X2, X3, linewidth = 1.5, alpha = .3)\n",
    "\n",
    "########################### vector y ###############################\n",
    "y = np.array([1, 2, 3])\n",
    "u1, u2 = np.array([2, 5, -1]), np.array([-2, 1, 1])\n",
    "\n",
    "vec = np.array([[0, 0, 0, y[0], y[1], y[2]]])\n",
    "X, Y, Z, U, V, W = zip(*vec)\n",
    "ax.quiver(X, Y, Z, U, V, W, length=1, normalize=False, color = 'red', alpha = .6,arrow_length_ratio = .08, pivot = 'tail',\n",
    "          linestyles = 'solid',linewidths = 3)\n",
    "\n",
    "ax.text(y[0], y[1], y[2], '$\\mathbf{y}$', size = 15)\n",
    "########################### vector u1 and u2 ###############################\n",
    "\n",
    "vec = np.array([[0, 0, 0, u1[0], u1[1], u1[2]]])\n",
    "X, Y, Z, U, V, W = zip(*vec)\n",
    "ax.quiver(X, Y, Z, U, V, W, length=1, normalize=False, color = 'red', alpha = .6,arrow_length_ratio = .08, pivot = 'tail',\n",
    "          linestyles = 'solid',linewidths = 3)\n",
    "\n",
    "vec = np.array([[0, 0, 0, u2[0], u2[1], u2[2]]])\n",
    "X, Y, Z, U, V, W = zip(*vec)\n",
    "ax.quiver(X, Y, Z, U, V, W, length=1, normalize=False, color = 'red', alpha = .6,arrow_length_ratio = .08, pivot = 'tail',\n",
    "          linestyles = 'solid',linewidths = 3)\n",
    "\n",
    "\n",
    "ax.text(u1[0], u1[1], u1[2], '$\\mathbf{u}_1$', size = 15)\n",
    "ax.text(u2[0], u2[1], u2[2], '$\\mathbf{u}_2$', size = 15)\n",
    "###########################  yhat ###############################\n",
    "\n",
    "alpha1 = (y@u1)/(u1@u1)\n",
    "alpha2 = (y@u2)/(u2@u2)\n",
    "\n",
    "yhat1 = alpha1*u1\n",
    "yhat2 = alpha2*u2\n",
    "yhat = yhat1 + yhat2\n",
    "\n",
    "vec = np.array([[0, 0, 0, yhat1[0], yhat1[1], yhat1[2]]])\n",
    "X, Y, Z, U, V, W = zip(*vec)\n",
    "ax.quiver(X, Y, Z, U, V, W, length=1, normalize=False, color = 'blue', alpha = .6,arrow_length_ratio = .08, pivot = 'tail',\n",
    "          linestyles = 'solid',linewidths = 3, zorder= 3)\n",
    "\n",
    "vec = np.array([[0, 0, 0, yhat2[0], yhat2[1], yhat2[2]]])\n",
    "X, Y, Z, U, V, W = zip(*vec)\n",
    "ax.quiver(X, Y, Z, U, V, W, length=1, normalize=False, color = 'blue', alpha = .6,arrow_length_ratio = .08, pivot = 'tail',\n",
    "          linestyles = 'solid',linewidths = 3, zorder= 3)\n",
    "\n",
    "vec = np.array([[0, 0, 0, yhat[0], yhat[1], yhat[2]]])\n",
    "X, Y, Z, U, V, W = zip(*vec)\n",
    "ax.quiver(X, Y, Z, U, V, W, length=1, normalize=False, color = 'pink', alpha = 1,arrow_length_ratio = .12, pivot = 'tail',\n",
    "          linestyles = 'solid',linewidths = 3, zorder= 3)\n",
    "\n",
    "ax.text(yhat1[0], yhat1[1], yhat1[2], '$\\hat{\\mathbf{y}}_1$', size = 15)\n",
    "ax.text(yhat2[0], yhat2[1], yhat2[2], '$\\hat{\\mathbf{y}}_2$', size = 15)\n",
    "ax.text(x = yhat[0], y = yhat[1], z = yhat[2], \n",
    "        s = r'$\\hat{\\mathbf{y}}=\\frac{\\mathbf{y} \\cdot \\mathbf{u}_{1}}{\\mathbf{u}_{1} \\cdot \\mathbf{u}_{1}} \\mathbf{u}_{1}+\\frac{\\mathbf{y} \\cdot \\mathbf{u}_{2}}{\\mathbf{u}_{2} \\cdot \\mathbf{u}_{2}} \\mathbf{u}_{2}=\\hat{\\mathbf{y}}_{1}+\\hat{\\mathbf{y}}_{2}$', size = 15)\n",
    "###########################  z ###############################\n",
    "z = y - yhat\n",
    "vec = np.array([[yhat[0], yhat[1], yhat[2], z[0], z[1], z[2]]])\n",
    "X, Y, Z, U, V, W = zip(*vec)\n",
    "ax.quiver(X, Y, Z, U, V, W, length=1, normalize=False, color = 'green', alpha = .6,arrow_length_ratio = .08, pivot = 'tail',\n",
    "          linestyles = 'solid',linewidths = 3)\n",
    "\n",
    "############################ Dashed Line ####################\n",
    "\n",
    "line1 = np.array([y, yhat1])\n",
    "ax.plot(line1[:,0], line1[:,1], line1[:,2], c = 'b', lw = 3.5,alpha =0.5, ls = '--')\n",
    "\n",
    "line2 = np.array([y, yhat2])\n",
    "ax.plot(line2[:,0], line2[:,1], line2[:,2], c = 'b', lw = 2.5,alpha =0.5, ls = '--')\n",
    "\n",
    "line3 = np.array([yhat, yhat2])\n",
    "ax.plot(line3[:,0], line3[:,1], line3[:,2], c = 'b', lw = 2.5,alpha =0.5, ls = '--')\n",
    "\n",
    "line4 = np.array([yhat, yhat1])\n",
    "ax.plot(line4[:,0], line4[:,1], line4[:,2], c = 'b', lw = 2.5,alpha =0.5, ls = '--')\n",
    "\n",
    "############################# View Angel\n",
    "ax.view_init(elev=-6, azim=12)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# <font face=\"gotham\" color=\"purple\"> Orthonormal Sets</font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "An <font face=\"gotham\" color=\"red\"> orthonormal set</font> is obtained from normalizing the orthogonal set, and also called <font face=\"gotham\" color=\"red\">orthonomal basis</font>."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Matrices whose columns form an orthonormal set are important for matrix computation.\n",
    "\n",
    "Let $U=\\left[\\begin{array}{lll}\n",
    "\\mathbf{u}_{1} & \\mathbf{u}_{2} & \\mathbf{u}_{3}\n",
    "\\end{array}\\right]$, where $\\mathbf{u}_{i}$'s are from an orthonormal set, the outer product, $U^TU$ is\n",
    "\n",
    "$$U^{T} U=\\left[\\begin{array}{l}\n",
    "\\mathbf{u}_{1}^{T} \\\\\n",
    "\\mathbf{u}_{2}^{T} \\\\\n",
    "\\mathbf{u}_{3}^{T}\n",
    "\\end{array}\\right]\\left[\\begin{array}{lll}\n",
    "\\mathbf{u}_{1} & \\mathbf{u}_{2} & \\mathbf{u}_{3}\n",
    "\\end{array}\\right]=\\left[\\begin{array}{lll}\n",
    "\\mathbf{u}_{1}^{T} \\mathbf{u}_{1} & \\mathbf{u}_{1}^{T} \\mathbf{u}_{2} & \\mathbf{u}_{1}^{T} \\mathbf{u}_{3} \\\\\n",
    "\\mathbf{u}_{2}^{T} \\mathbf{u}_{1} & \\mathbf{u}_{2}^{T} \\mathbf{u}_{2} & \\mathbf{u}_{2}^{T} \\mathbf{u}_{3} \\\\\n",
    "\\mathbf{u}_{3}^{T} \\mathbf{u}_{1} & \\mathbf{u}_{3}^{T} \\mathbf{u}_{2} & \\mathbf{u}_{3}^{T} \\mathbf{u}_{3}\n",
    "\\end{array}\\right]$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And $\\mathbf{u}_{i}^{T} \\mathbf{u}_{j}, i, j \\in (1, 2, 3)$ is an inner product."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Because of orthonormal sets, we have \n",
    "\n",
    "$$\n",
    "\\mathbf{u}_{1}^{T} \\mathbf{u}_{2}=\\mathbf{u}_{2}^{T} \\mathbf{u}_{1}=0, \\quad \\mathbf{u}_{1}^{T} \\mathbf{u}_{3}=\\mathbf{u}_{3}^{T} \\mathbf{u}_{1}=0, \\quad \\mathbf{u}_{2}^{T} \\mathbf{u}_{3}=\\mathbf{u}_{3}^{T} \\mathbf{u}_{2}=0\\\\\n",
    "\\mathbf{u}_{1}^{T} \\mathbf{u}_{1}=1, \\quad \\mathbf{u}_{2}^{T} \\mathbf{u}_{2}=1, \\quad \\mathbf{u}_{3}^{T} \\mathbf{u}_{3}=1\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "which means\n",
    "\n",
    "$$\n",
    "U^TU = I\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Recall that we have a general projection formula \n",
    "\n",
    "$$\n",
    "\\hat{\\mathbf{y}}=\\frac{\\mathbf{y} \\cdot \\mathbf{u}_{1}}{\\mathbf{u}_{1} \\cdot \\mathbf{u}_{1}} \\mathbf{u}_{1}+\\cdots+\\frac{\\mathbf{y} \\cdot \\mathbf{u}_{p}}{\\mathbf{u}_{p} \\cdot \\mathbf{u}_{p}} \\mathbf{u}_{p}\n",
    "=\\frac{\\mathbf{y} \\cdot \\mathbf{u}_{1}}{{\\mathbf{u}_{1}^T} \\mathbf{u}_{1}} \\mathbf{u}_{1}+\\cdots+\\frac{\\mathbf{y} \\cdot \\mathbf{u}_{p}}{{\\mathbf{u}_{p}^T} \\mathbf{u}_{p}} \\mathbf{u}_{p}\\\\\n",
    "$$\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If the $\\{\\mathbf{u}_1,...,\\mathbf{u}_p\\}$ is an orthonormal set, then \n",
    "\n",
    "\\begin{align}\n",
    "\\hat{\\mathbf{y}}&=\\left(\\mathbf{y} \\cdot \\mathbf{u}_{1}\\right) \\mathbf{u}_{1}+\\left(\\mathbf{y} \\cdot \\mathbf{u}_{2}\\right) \\mathbf{u}_{2}+\\cdots+\\left(\\mathbf{y} \\cdot \\mathbf{u}_{p}\\right) \\mathbf{u}_{p}\\\\\n",
    "& = \\left(\\mathbf{u}_{1}^T\\mathbf{y}\\right) \\mathbf{u}_{1}+\\left(\\mathbf{u}_{2}^T\\mathbf{y}\\right) \\mathbf{u}_{2}+\\cdots+\\left(\\mathbf{u}_{p}^T\\mathbf{y}\\right) \\mathbf{u}_{p}\\\\\n",
    "\\end{align}"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "165px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
